ASP.NET中特殊字符的正则表达式验证
我需要在Regex中验证场景,我正在ASP.NET中使用RegularExpression验证ASP.NET中特殊字符的正则表达式验证,asp.net,.net,regex,validation,Asp.net,.net,Regex,Validation,我需要在Regex中验证场景,我正在ASP.NET中使用RegularExpression验证 不应该以空格开始或结束 不包含唯一的空间 整个字符串不应包含两个特殊字符“@”和“?” 有效期: "as#d qwe2", "&^%$$(&+_", "12#$.p" 无效: " ", "asd ", " asd#", "ksdhf?kh", "asdf@asd" 我正在尝试这样做: <asp:RegularExpressionValidator ID="RegularEx
"as#d qwe2", "&^%$$(&+_", "12#$.p"
无效:
" ", "asd ", " asd#", "ksdhf?kh", "asdf@asd"
我正在尝试这样做:
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1"
ErrorMessage="RegularExpressionValidator"
ValidationExpression="^[^\s]+(\s+[^@?]+)*[^\s]$">Error</asp:RegularExpressionValidator>
错误
未测试的正则表达式:^([^@?][^@?]*[^@?]|[^@?])$
当前使用的正则表达式有几个问题:
^[^\s]+
如果不是以空格字符开头,则几乎匹配所有字符串(因此匹配@
或?
)^(?!\s|.*\s$)[^?@]+$
如果字符串以
\s
开头或以\s
和[^@]+
结尾,则(?!\s |.*\s$)
将阻止匹配,但?
和@
除外。仅限空格的字符串将自动被拒绝,因为仅限空格的字符串必须以空格开头。您尝试过什么吗?尝试过“^[^\s]+(\s+[^@?]+)*[^\s]$”,不起作用…您使用的是哪种正则表达式引擎。NET的Regex.IsMatch(“,@”^[^][^@?]*[^]$”
返回false
。这允许字符串以[@?]开头/结尾,并且不允许使用单字符字符串。很好的捕获-改进了。如果我只提供空格,则aspx页面将返回,理想情况下它不应该。。。你测试过它吗?@user3398663我没有aspx来实现你在问题中的代码,但是我在使用基于C#/ASP.NET的正则表达式引擎的正则表达式工具中测试过它,并且上面的内容不匹配仅空格字符串。@user3398663也许你可以尝试使用实际空格“”,而不是\s
?这只是一个想法。@user3398663我在网上找到了一个IDE,它似乎在用C#工作。其他以空格开头和/或结尾的字符串是否也被发回?以下字符串工作正常:“a”、“a”、“a”。。。。。但只有空间不起作用。