1

这是我从微软网站找到的正则表达式

(?!^[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.

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

4

1 回答 1

3

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

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

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

(?=.*[a-zA-Z])至少需要一封信

您的正则表达式将如下所示:

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

表示至少需要一个数字、一个字母并由 8 到 10 个字符组成。.可以是任何字符,但不能是换行符。

在 Regexr 上查看

于 2012-06-25T12:42:36.197 回答