正则表达式严格检查字母数字和特殊字符

时间:2013-09-18 03:44:56

标签: javascript regex special-characters alphanumeric

检查带有特殊字符的字母数字

var regex = /^[a-zA-Z0-9_$@.]{8,15}$/;
   return regex.test(pass);

但是,即使我通过以下组合

,上面的正则表达式返回true

asghlkyudet

78346709tr

jkdg7683786

但是,我想要它,它必须有字母数字和特殊字符,否则必须为任何情况返回false。例如:

fg56_fg$

Sghdfi@90

3 个答案:

答案 0 :(得分:2)

使用look-ahead检查字符串是否至少包含一个字母数字字符和至少一个特殊字符:

/^(?=.*[a-zA-Z0-9])(?=.*[_$@.])[a-zA-Z0-9_$@.]{8,15}$/

顺便说一下,特殊字符集太小了。即使考虑一组ASCII字符,这甚至都不是所有特殊字符。

答案 1 :(得分:2)

您可以将a-zA-Z0-9_替换为\w,并使用两个锚定前瞻 - 一个用于特殊,一个用于非特殊,最简单的表达方式是:

/^(?=.*[_$@.])(?=.*[^_$@.])[\w$@.]{8,15}$/

答案 2 :(得分:-1)

美元符号是Regexes的保留字符。你需要逃脱它。

var regex = /^[a-zA-Z0-9_/$@.]{8,15}$/;