2

我有用于验证用户密码的正则表达式以包含:

  • 至少 8 个字母数字字符
  • 1个大写字母
  • 1个小写字母
  • 1 位数

允许特殊字符!@#$%*.~

我正在使用以下正则表达式:

(?=(.*\w){8,})(?=(.*[A-Z]){1,})(?=(.*[a-z]){1,})(?=(.*[0-9]){1,})(?=(.*[!@#$%*.~]))

但是,这不会阻止用户输入其他特殊字符,例如 <、> 和 &。

如何限制允许的特殊字符数?

4

2 回答 2

3

验证所有内容单个正则表达式最终看起来像线路噪音。

相反,我建议:

  • 使用简单的字符串函数来测试长度
  • 使用正则表达式测试字符包含和有效性
于 2012-10-02T18:00:47.180 回答
1
^(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z])[a-zA-Z0-9!@#$%*.~]{8,}$

顺便说一下,锚定(^$)很重要。

于 2012-10-02T18:08:52.217 回答