我正在尝试开发一个需要以下条件的密码验证正则表达式,
我提出了这个前瞻性的正则表达式,但不幸的是它似乎不适用于非ascii字符。
^(?=.*[A-Z])(?=.*\d)(?=[\x20-\x7E]).{8,45}$
经过测试,
ABCD1234abcd!" #$%&'()*+,-./:;<=>?@[\]^_`{|}~
然而,似乎不能使用非ascii字符,即它仍然匹配非ascii字符,尽管\x20-\x7E
,
ABCD1234abcd!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~£
请注意,我也希望包含空格。
我在这里做错了什么显而易见的事情?
答案 0 :(得分:3)
你的正则表达式允许任何字符通过点.
。您的前瞻只需要第一个字符为ascii。
将点更改为ascii范围:
^(?=.*[A-Z])(?=.*\d)[\x20-\x7E]{8,45}$