正则表达式 - 至少1个数字,1个字母,1个特殊字符和至少3个字符

时间:2016-05-23 13:32:35

标签: javascript jquery regex

我想测试自己的正则表达式,以便了解如何使用它并创建我的自定义正则表达式。

我试过这个:

^(?=.*\d)(?=.*[a-zA-Z])(?=.*[\W_]){3}$

(?=.*\d) =>至少1个号码。 (?=.*[a-zA-Z]) =>至少1个字母。 (?=.*[\W_]) =>至少1个特殊字符。 {3} =>至少3个字符。

不幸的是,它不起作用,但我想要输入至少1个数字,1个字母和1个特殊字符,以及至少3个字符。当用户键入这3种类型的字符时,我的消息消失,因为正则表达式是正确的^^

抱歉我的英文不好,如果你愿意,我可以给你更多细节,谢谢你的帮助:)

度过愉快的一天:)

2 个答案:

答案 0 :(得分:5)

问题是你的{3}量词适用于你的最后一次预测,这是荒谬的:这意味着在文本的开头,你必须匹配前瞻的3倍,这是给定的如果它匹配一次,因为环视是0宽度匹配。

您可以使用以下内容:

^(?=.*\d)(?=.*[a-zA-Z])(?=.*[\W_]).{3,}$

除了现有的预测外,还指定必须匹配至少3个字符。

如果您只是测试字符串,那么匹配

也足够了
^(?=.*\d)(?=.*[a-zA-Z])(?=.*[\W_]).{3}

没有结束锚:你匹配3个字符,并且在满足你的要求后停止匹配以下内容。

答案 1 :(得分:2)

如果您想要1个数字,1个字母,1个特殊字符,那些至少3个字符

^(?=\D*\d)(?=.*?[a-zA-Z]).*[\W_].*$

Here's a demo at regex101。或仅用于匹配:

^(?=\D*\d)(?=.*?[a-zA-Z]).*[\W_]
  • (?=\D*\d)第一个前瞻需要一个数字(前面有任何\D 非数字)。
  • (?=.*?[a-zA-Z])秒前瞻需要一个alpha(前面有任何字符)。
  • .*[\W_]匹配,直到一个特殊字符。

所有这些一起需要至少3个不同的字符:1位,1位,1位特殊。

相关问题