我想了解正则表达式的含义
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$
以下是我对我的理解。你能确认一下吗?
(?=^.{8,}$)
字符串应为8个字符或更多
((?=.*\d)|(?=.*\W+))
字符串应包含一个数字或一个特殊字符。 W后的加号是什么?
(?![.\n])
不确定这部分是什么意思。
(?=.*[A-Z])(?=.*[a-z]).*$
我的理解是$
意味着表达的结束,所以它有点令人困惑,为什么它前面有一个点和一个星号。另外为什么只有一个$
?它不应该有两个:$
之后的.*[A-Z]
和.*[a-z]
之后的一个#ca
?要说这部分应该确保用户输入一个小写和一个大写字母?
我在html表单中使用此代码进行练习并且工作正常。
所有这些常规应该实现这一点并且它正在这样做 UpperCase,LowerCase,Number / SpecialChar和min 8 Chars
编辑:regex101.com我也试图理解这方面@ymonad在评论中说的
答案 0 :(得分:1)
正则表达式:
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$
<强>解释强>
(?=^.{8,}$)
- Positive Lookahead验证测试字符串在字符串的开头和结尾之间至少有8个字符(换行符除外)(?=.*\d)
- Positive lookahead验证测试字符串是否包含数字|
- 或(?=.*\W+)
- Positive lookahead验证输入字符串是否包含至少1个或更多不属于此范围的非Word字符[a-zA-Z0-9_]
(?![.\n])
- Negative lookahead用于验证输入字符串在当前位置没有换行符\n
或点.
(?=.*[A-Z])
- Positive lookahead验证输入字符串是否为大写字母[A-Z]
(?=.*[a-z])
- Positive lookahead验证输入字符串是否为小写字母[a-z]
.*
- 在此之前,我们只是根据各种规则验证输入字符串。现在,使用.*
我们匹配除了新行字符$
- 断言字符串的结尾此外,正如评论中指出的那样,THIS SITE可以是一个良好的开端。