我尝试创建一个正则表达式来匹配所有字符串的 大小写和长度限制为的符号A-Z
。digits
@#$_
4 to 16
我没用的正则表达式:
/^([a-zA-Z])|(\d)|(@#\$_){4,16}$/
我测试在线正则表达式生成器,例如http://www.jslab.dk/tools.regex.php但没有一个好的结果。
我尝试创建一个正则表达式来匹配所有字符串的 大小写和长度限制为的符号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}$/
但更好的解决方案是将所有内容添加到一个字符类中
/^[a-zA-Z@#$_\d]{4,16}$/
您也许可以进一步简化它,因为[a-zA-Z\d_]
它与\w
, when\w
不是基于 unicode 的相同!
/^[\w@#$]{4,16}$/
您需要的表达式是这个:
( ([a-zA-Z])|(\d)|(@#\$_) ){4,6}
您遇到的问题是最后一个 {2,6} 仅影响最后一组括号,而不影响整个表达式。还要确保“/^”和“$/”对于您的情况是强制性的,因为“^”的意思是“不是”,所以我不确定你为什么在那里有它。
您还可以在此处以图形方式查看它:http: //www.debuggex.com/