什么是正则表达方式

时间:2017-10-19 02:08:35

标签: regex

我想了解正则表达式的含义

(?=^.{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在评论中说的

1 个答案:

答案 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]
  • .* - 在此之前,我们只是根据各种规则验证输入字符串。现在,使用.*我们匹配除了新行字符
  • 之外的任何字符的0次出现
  • $ - 断言字符串的结尾

此外,正如评论中指出的那样,THIS SITE可以是一个良好的开端。