gpt4 book ai didi

regex - 形成正则表达式的特殊方法?

转载 作者:行者123 更新时间:2023-12-01 09:34:25 25 4
gpt4 key购买 nike

我遇到过这个正则表达式,我想知道它是如何使用的:

^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$

我想知道正则表达式的各个部分是什么意思,而不仅仅是整个正则表达式的作用。

根据我对正则表达式的了解,我认为它匹配任何与数字 (0-9)、小写和大写字母匹配的输入(至少 10 个字符长),但我需要确认这是否正确?

编辑

我也不知道它是用来验证什么的,但是看看我认为它做了什么,正则表达式可以简化为:

[\d|[a-zA-Z]]{10,}

编辑 2我注意到我的替换正则表达式不能确保我至少满足每个要求中的一个(至少一个数字、大写和小写字母)。有什么方法可以调整它,使正则表达式也能做到这一点,还是只有原始正则表达式才有可能?

最佳答案

我可以解释正则表达式的作用,但总的来说我觉得这很奇怪:

^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$

基本上你说的是真的 - 正则表达式中没有其他魔法。

^.* - 匹配行首和 0+ 个字符,然后确保

以下只是断言-它们都不匹配/捕获任何内容。如果你想查找它,它被称为正向前瞻。如果它们都评估为真,则正则表达式的最后一部分将完成其余部分:

(?=.{10,}) - 从第一个匹配停止的地方(可能在行首之后)有一个 10 多个字符的字符串(任何字符)

(?=.*\d) - 前面的整个字符串中至少有一位数字

(?=.*[a-z]) - 和一个小写字母

(?=.*[A-Z]) - 和一个大写字母

如果一切都是真的,那么:

.*$ - 匹配所有内容直到行尾

注意:如果任何断言失败,则不会匹配任何内容。

您的编辑

我不这么认为 - 说字符串中某处有一个大写和小写字母和一个数字,并且说该字符串由 10+ 个字符组成,这些字符都是数字或字母(大写或小写)或两者兼有。您的正则表达式将匹配仅包含数字和字母或两者混合的字符串 - 原始正则表达式确保这些类中的每一个至少表示一次。似乎有人用它来验证用户密码或类似的东西。

关于regex - 形成正则表达式的特殊方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10829065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com