0

我有一个密码字段的客户端验证正则表达式,它应该允许 Unicode 支持的所有语言的字母。

这是密码的现有正则表达式:

(?=^.{8,21}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z])

我正在使用 XRegExp 库,并且我尝试修改正则表达式以包含 \p{L} 但我无法让它通过像“Ss!11111”这样的密码。

下面是我修改过的正则表达式:

(?=^.{8,21}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*\\p{L})

我知道这个问题可能看起来很愚蠢,但我目前没有多少时间来试验这个正则表达式。如果有人帮助我并指出我正确的方向,那将非常有帮助。

4

1 回答 1

1

您需要将所有反斜杠加倍:

(?=^.{8,21}$)((?=.*\\d)|(?=.*\\W))(?![.\\n])(?=.*\\p{L})

另外,我不确定正则表达式是否有意义。这真的是你想要的吗:

(?=^.{8,21}$)  # Assert length 8-21 characters (why only 21?)
(              # Group 1:
 (?=.*\\d)     # Assert at least one digit in the string
|              # OR
 (?=.*\\W)     # at least one non-alnum character in the string
)              # End of group 1
(?![.\\n])     # Assert that the *first* character isn't a dot or newline (??)
(?=.*\\p{L})   # Assert at least one letter in the string
于 2013-07-11T05:45:57.523 回答