3

我正在使用 VB 在 ASP.Net 中构建一个表单,并且我有一个文本框,我想根据以下规则进行验证:

  • 长度必须为 6 - 20 个字符
  • 可以包含字母并且可以是所有字母
  • 可以包含以下特殊字符:!@#$%^&*+-=(){}:;,'./?
  • 不能包含任何空格。
  • 不能全是数字,也不需要数字
  • 案件无所谓

这些要求不是我设定的……这正是我必须处理的。

因此,以下内容将匹配:

TestUserPass
Te$tU$e^p@%}
testuserpass
test{user}n@ame

以下内容不匹配:

8392039
dhj#5|3j

希望这能让我知道我在寻找什么......

这是我到目前为止所拥有的:\b[a-zA-Z0-9!@#\$%\^&\*\+=\(\){}:;,'\./\?-]{6,20}\b

我相信这对所有事情都有效,除了使条目是所有数字的实例无效。这是我一直在努力解决的所有数字部分,尽管也许有人会发现我已经拥有的缺陷。任何帮助是极大的赞赏!

4

2 回答 2

1

您应该使用不同的锚点,并且可以使用否定的前瞻断言来确保存在除数字之外的其他字符:

^(?![0-9]*$)[a-zA-Z0-9!@#\$%^&*+=(){}:;,'./?-]{6,20}$

此外,您不需要在字符类中转义(大多数)正则表达式元字符,因为它们在那里没有特殊含义。

于 2013-08-08T17:07:15.923 回答
1

使用这个正则表达式

^(?!\d+$)[a-zA-Z\d!@#$%^&*+=(){}:;,'./?-]{6,20}$
 --------                                
     |
     |->dont match further if all are digits

-在字符类内表示一个范围,应该转义或者应该在开头或结尾...

于 2013-08-08T17:07:25.200 回答