我尝试创建一个匹配大小写的正则表达式A-Z,digits以及所有字符串的@#$_长度限制符号4 to 16.
我无用的正则表达式:
/^([a-zA-Z])|(\d)|(@#\$_){4,16}$/
我测试了在线正则表达式生成器,如http://www.jslab.dk/tools.regex.php但没有很好的结果.
你的正则表达式/^([a-zA-Z])|(\d)|(@#\$_){4,16}$/匹配单个字母或单个数字或4到16个字符"@#\ _ _".
替代方案周围的群体毫无用处.
一种解决方案是围绕整个交替进行组合
/^([a-zA-Z]|\d|@#\$_){4,16}$/
Run Code Online (Sandbox Code Playgroud)
但更好的解决方案是将所有内容添加到一个字符类中
/^[a-zA-Z@#$_\d]{4,16}$/
Run Code Online (Sandbox Code Playgroud)
在Regexr上看到它
你也许可以进一步简化它,因为[a-zA-Z\d_]比相同\w,当\w不基于Unicode!
/^[\w@#$]{4,16}$/
Run Code Online (Sandbox Code Playgroud)