我需要验证Regex中的场景,我在ASP.NET中使用RegularExpression验证。
有效:
"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>
答案 0 :(得分:0)
未经测试的RegEx:^([^ @?][^@?]*[^ @?]|[^ @?])$
答案 1 :(得分:0)
您目前正在使用的正则表达式存在一些问题:
^[^\s]+
匹配几乎所有字符串,如果它不是以空格字符开头(因此匹配@
或?
)。
由于构造正则表达式的方式,您只能输入长度为2及以上的字符串。这是一个小小的挫折,但可以避免。
我建议使用否定前瞻,因为在第一个字符上有多个“检查”:
^(?!\s|.*\s$)[^?@]+$
如果字符串以(?!\s|.*\s$)
开头或以\s
结尾且\s
匹配除[^?@]+
和?
之外的所有字符, @
将阻止匹配}。仅空格字符串将自动被拒绝,因为仅空格字符串必须以空格开头。