Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
Regex-仅保持匹配空白-使用ASP.NET RegularExpressionValidator_Asp.net_Regex - Fatal编程技术网

Regex-仅保持匹配空白-使用ASP.NET RegularExpressionValidator

Regex-仅保持匹配空白-使用ASP.NET RegularExpressionValidator,asp.net,regex,Asp.net,Regex,我一直在学习一些正则表达式,因为我试图创建一个字段来验证一个正确的网站,不允许空白 我目前有: ^((http | https | ftp)\://)?(www\.[a-zA-Z0-9\-.]+.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/([a-zA-Z0-9\-.\.\,'/\++%\$\$\\\=~])*[^\.,\,\($s]) “www.google.com”通行证 “www.google.com”失败 “www.google.com”失败 然而 ”“通过 我认为通过添

我一直在学习一些正则表达式,因为我试图创建一个字段来验证一个正确的网站,不允许空白

我目前有:

^((http | https | ftp)\://)?(www\.[a-zA-Z0-9\-.]+.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/([a-zA-Z0-9\-.\.\,'/\++%\$\$\\\=~])*[^\.,\,\($s])

“www.google.com”通行证

“www.google.com”失败

“www.google.com”失败

然而

”“通过

我认为通过添加“仅以http | https | ftp开头”可以确保不会出现空白,甚至可以在前面加上
[^\s]
,但没有效果


如果有帮助的话,我正在使用ASP.NET WebForms RegularExpressionValidator控件。

编辑:我发现MS RegularExpressionValidator控件将纯空白视为空字符串,在插入非空白字符之前,验证不会开始。有点烦人,但应该只是添加一个RequiredFieldValidator就可以了(对任何感兴趣的人来说)RegularExpressionValidator不会在空白输入时启动


EDIT2:对于我这种情况下的其他人,RequiredFieldValidator是无用的,因为我不希望该字段是强制性的,我只希望它不包含空格!我不知道为什么微软不在正则表达式上验证空白,相反,我不得不采用简单的.Trim方法进行服务器端验证

对于以域名命名的网站,正则表达式也会失败,例如

而且,我觉得它有点过于复杂了。由于有效的主机名/域名只能包含数字、字母和连字符(后者仅当被数字或字母包围时…),您可以将正则表达式更改为:

^(?:[a-zA-Z0-9]+[-]*[a-zA-Z0-9]+)(?:[.][a-zA-Z0-9]+[-]*[a-zA-Z0-9]+)+$
我不会检查协议,但如果您需要,这里是完整的正则表达式:

^(?:(?:http|https|ftp)\://)?(?:[a-zA-Z0-9]+[-]*[a-zA-Z0-9]+)(?:[.][a-zA-Z0-9]+[-]*[a-zA-Z0-9]+)+$


相反,因为路径可以包含几乎所有内容(*),所以我认为验证它的唯一方法是发出一个HEAD并查看服务器的响应代码

您的正则表达式是正确的,它不允许使用空格字符。请参见,但是您知道为什么ASP控件允许空白吗?我曾认为,如果正则表达式检查器只注意到空格,它可能不会启动,但这是我需要包含编辑的一项要求:不必担心(*)这实际上不是真的,有一个有效的字符集:不过,您可以查看这个答案,以获得更好的URI部分正则表达式