Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 密码的正则表达式匹配_Asp.net_Regex_Vb.net - Fatal编程技术网

Asp.net 密码的正则表达式匹配

Asp.net 密码的正则表达式匹配,asp.net,regex,vb.net,Asp.net,Regex,Vb.net,我正在使用VB在ASP.Net中构建表单,我有一个文本框,我想根据以下规则验证它: 长度必须为6-20个字符 可以包含字母,也可以是所有字母 可以包含以下特殊字符:!@$%^&*+-=(){}:;,'./? 不能包含任何空格 不能是所有数字,也不需要数字 这件事无关紧要 这些要求不是我设定的……这正是我必须处理的 因此,以下内容将匹配: TestUserPass Te$tU$e^p@%} testuserpass test{user}n@ame 以下内容不匹配: 8392039 dhj#5

我正在使用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


我相信这对所有事情都有效,除了使条目都是数字的实例无效。这是我一直在努力解决的所有数字部分,尽管也许有人会在我已经拥有的东西中发现一个缺陷。非常感谢您的帮助

您应该使用不同的定位点,并且您可以使用来确保存在除数字以外的其他字符:

^(?[0-9]*$)[a-zA-Z0-9!@\$%^&*+=(){}:;,'./?-]{6,20}$
此外,您不需要转义字符类中的(大多数)正则表达式元字符,因为它们在那里没有特殊意义。

使用此正则表达式

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

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

为什么不为每个规则指定一个单独的正则表达式?因此,您的问题是:如何查找是否只存在数字字符串。你试过什么吗?@Greg我本来可以这么做的,但我希望一个表达式和一个验证控件能够简单。谢谢你提出的建设性问题@我的问题不是这样的。我只知道如何匹配一串数字……我的问题是如何将它们与我已经拥有的结合起来。在这种情况下,我需要帮助的是消极的前瞻性断言。这是我在这里发布的第一个问题,因此,如果问题不够清楚,或者如果我没有首先证明我已经做了一些研究,我深表歉意。感谢您的快速响应和一个有效的正则表达式。更重要的是,感谢你解释为什么它有效,我以前错过了什么,以及如何调整我已经拥有的。谢谢你的帮助!你的正则表达式和蒂姆的一样完美。