ASP.. Net: RegularExpressionValidator ValidationExpression防止
本文关键字:ValidationExpression 防止 RegularExpressionValidator Net ASP | 更新日期: 2023-09-27 18:11:03
我想做一个ASP。阻止;
和–-
输入的净RegularExpressionValidator
和ValidationExpression
我可以为–
做,它是ValidationExpression="[^-]*"
。
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
runat="server"
ControlToValidate="TextBox1" Display="Dynamic" ErrorMessage="**"
ValidationExpression="[^-]*"></asp:RegularExpressionValidator>
以上表达式可以防止单个–
字符。我将允许单个–
字符。我将阻止双–
字符(--
)。我需要同时阻止;
和–
。
有人能帮我吗?
Regex需要变得更聪明。您需要阻止多个连字符、m-破折号和分号。
那么试试@"^(?=[^–;]*)((?!--).)*$"
分解:
^
匹配一行的开头,并帮助确保验证器用于匹配整个字符串。
第一组括号中的表达式将匹配不包含m-破折号和分号的任何字符集。您可能希望使用'x2014
转义序列替换m-破折号的十六进制值。它被定义为非消耗?=
,这意味着Regex引擎必须匹配此模式,但在找到匹配时不会推进其索引,因此也将为下一个模式测试相同的一组字符。
第二组括号中的表达式是反向正向的;它将匹配不包含两个(或更多)相邻连字符的任何字符集。然而,这可能有点慢;这个regex基本上迫使regex引擎一次一个地考虑每个字符,从那个点开始向前看,以确保下一个字符不会与相反的模式匹配。
后面的$
标志着一行的结束;与^
一起,它确保您在确定匹配时查看单个字符串(或多行数据中的行)中的所有内容。
把它插入到一个像Derek Slater的Regex测试器中,并尝试一下,以确保它会停止所有你想要的场景。