带有特殊字符的密码的正则表达式

时间:2012-06-25 12:27:50

标签: regex

以下是来自微软网站的正则表达式

(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$ 

Validates a strong password. It must be between 8 and 10 characters, contain at least one digit and one alphabetic character, and must not contain special characters.

但现在我们决定允许用户在其密码中使用特殊字符,那么如何修改此正则表达式呢?我不太明白为什么把?!放在前面。

1 个答案:

答案 0 :(得分:3)

(?!^[0-9]*$)是一个负面的预测。如果从开始到结束只有数字,则该断言失败。所以,你有不同的可能性:

我会重写这些条件,要求至少一个,而不是仅禁止那些字符。

(?=.*\d)至少需要一位数

(?=.*[a-zA-Z])至少需要一个字母

你的正则表达式看起来像这样:

^(?=.*[0-9])(?=.*[a-zA-Z]).{8,10}$

表示至少需要一个数字,一个字母,并包含8到10个字符。 .可以是任何字符,但没有换行符。

here at Regexr