仅适用于Ascii的正则表达式

问题描述 投票:0回答:1

我正在尝试开发一个密码验证的正则表达式,需要以下条件,

  • 1大写
  • 1个数字
  • 长度为8-45
  • Ascii仅在OWASP list中指定

我提出了这个前瞻性的正则表达式,但不幸的是它似乎不适用于非ascii字符。

^(?=.*[A-Z])(?=.*\d)(?=[\x20-\x7E]).{8,45}$

经过测试,

ABCD1234abcd!" #$%&'()*+,-./:;<=>?@[\]^_`{|}~ 

然而,似乎不适用于非ascii字符,即它仍然匹配非ascii字符,尽管\x20-\x7E

ABCD1234abcd!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~£

请注意,我也想包含空格。

有什么明显我在这里做错了吗?

regex
1个回答
3
投票

你的正则表达式允许任何字符通过点.。你的前瞻只需要第一个字符为ascii。

将点更改为ascii范围:

^(?=.*[A-Z])(?=.*\d)[\x20-\x7E]{8,45}$
© www.soinside.com 2019 - 2024. All rights reserved.