正则表达式可选和组

时间:2016-07-20 04:40:12

标签: javascript regex validation

当至少有1个数字或1个特殊字符且总长度为8或更多时,模式应匹配。

它部分有效,但只有在特殊字符或数字值位于开头时才会有效。

到目前为止,我有:

/([\d]|[!@#$%^&*()_+])([a-z]).{8,}/

2 个答案:

答案 0 :(得分:3)

为什么过分复杂RegExp?当然可以,但您必须指定符合这些要求的可能字符组合的每个排列。就这样做:

if (/[\d!@#$%^&*()_+]/.test(string) && string.length >= 8) { ... }

答案 1 :(得分:0)

你反向做,不要试图积极匹配特殊字符,这限制了人们可以/必须使用的内容。相反,匹配您认为 not 不是特殊的东西,例如:

pw.length >= 8 && /\d/.test(pw) && /[^a-z\d\x20]/i.test(pw)

比检查长度,数字的存在,然后存在不是字母数字或空格的字符(i标志使其不区分大小写)。您可能还想禁止通常无法在键盘上键入的空格和其他控制字符(防止人们粘贴垃圾):

&& !/[\x00-\x20]/.test(pw)
相关问题