Javascript 带有XRegExp的密码Regex

Javascript 带有XRegExp的密码Regex,javascript,regex,validation,passwords,xregexp,Javascript,Regex,Validation,Passwords,Xregexp,我有一个密码字段的客户端验证正则表达式,它应该允许Unicode支持的所有语言的字母表 这是密码的现有正则表达式: (?=^.{8,21}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]) 我使用的是XRegExp库,我试图修改正则表达式以包含\p{L},但无法让它传递密码,如“Ss!11111” 下面是我修改过的正则表达式: (?=^.{8,21}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*\\p{L})

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

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

(?=^.{8,21}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z])
我使用的是XRegExp库,我试图修改正则表达式以包含\p{L},但无法让它传递密码,如“Ss!11111”

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

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

我知道这个问题可能看起来很愚蠢,但我现在几乎没有时间来试验这个正则表达式。如果有人帮我指出了方向并为我指出了方向,那将非常有帮助。

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

(?=^.{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

很好的捕捉。我想
(?![。\\n])
应该是
(?!.[。\\n])
太棒了,我真不敢相信这就是解决办法,哈哈。是的,这是所需的正则表达式,包括最多21个字符:)