正则表达式以排除特殊字符

时间:2010-07-19 13:53:24

标签: ruby regex

我需要一个正则表达式的密码,以满足我的rails项目中的以下约束:

  • 至少有8个字符,最多16个字符
  • 仅限字母数字
  • 至少包含一个字母和一个数字。

我现在的正则表达式是:

/^(?=.*\d)(?=.*([a-z]|[A-Z])).{8,16}$/

这允许我所有的限制,但特殊字符部分不起作用。我做错了什么有人可以纠正这个正则表达式吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

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

正则表达式的最后一部分.{8,16}允许任何带点的字符。

前瞻只能确保至少有一个数字和一个字母 - 它没有说明其他字符。另请注意,我已更新了您的字母匹配部分 - 您不需要两个字符类。

禁止密码中的特殊字符完全违反直觉。你为什么这样做?