我正在使用VB在ASP.Net中构建一个表单,我有一个文本框,我想根据以下规则进行验证:
!@#$%^&*+-=(){}:;,'./?
这些要求不是我设定的......这就是我必须要做的事情。
所以,以下内容将匹配:
TestUserPass
Te$tU$e^p@%}
testuserpass
test{user}n@ame
以下内容不匹配:
8392039
dhj#5|3j
希望能够了解我正在寻找的东西......
这是我到目前为止所拥有的:\b[a-zA-Z0-9!@#\$%\^&\*\+=\(\){}:;,'\./\?-]{6,20}\b
我认为除了使条目全部为数字的实例无效之外,它的所有功能都有效。这是我一直在努力的所有数字部分,尽管也许有人会发现我已经拥有的一个缺陷。非常感谢任何帮助!
答案 0 :(得分:1)
您应该使用不同的锚点,并且可以使用negative lookahead assertion来确保存在除数字之外的其他字符:
^(?![0-9]*$)[a-zA-Z0-9!@#\$%^&*+=(){}:;,'./?-]{6,20}$
此外,您不需要在字符类中转义(大多数)正则表达式元字符,因为它们在那里没有特殊含义。
答案 1 :(得分:1)
使用此正则表达式
^(?!\d+$)[a-zA-Z\d!@#$%^&*+=(){}:;,'./?-]{6,20}$
--------
|
|->dont match further if all are digits
字符类中的 -
代表一个范围,应该是转义的,或者应该在开头或结尾......