检查带有特殊字符的字母数字
var regex = /^[a-zA-Z0-9_$@.]{8,15}$/;
return regex.test(pass);
但是,即使我通过以下组合
,上面的正则表达式返回true
asghlkyudet
78346709tr
jkdg7683786
但是,我想要它,它必须有字母数字和特殊字符,否则必须为任何情况返回false。例如:
fg56_fg$
Sghdfi@90
答案 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}$/;