[英]ASP.Net: RegularExpressionValidator ValidationExpression to prevent `;` and `–` at a time
我想制作一个ASP.Net RegularExpressionValidator
ValidationExpression
,它将阻止输入;
和–-
。
我可以这样做–
它是ValidationExpression="[^-]*"
。
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
runat="server"
ControlToValidate="TextBox1" Display="Dynamic" ErrorMessage="**"
ValidationExpression="[^-]*"></asp:RegularExpressionValidator>
上述表达式可以防止单个–
字符。 我将给予单个许可–
字符。 我会阻止双–
字符( --
我需要预防;
而且–
一次。
谁能帮我?
正则表达式需要变得更聪明。 您想要阻止多个连字符,m-dash和分号。
所以,试试@"^(?=[^–;]*)((?!--).)*$"
打破它:
^
匹配行的开头,并帮助确保验证器用于匹配整个字符串。
第一组括号中的表达式将匹配不包含m-dash和分号的任何字符集。 您可能希望使用\\x2014
转义序列替换m-dash的十六进制值。 它被定义为非消耗的?=
,意味着正则表达式引擎必须匹配此模式,但在找到匹配时不会推进其索引,因此同样的字符集也将针对下一个模式进行测试。
第二组括号中的表达式是反向前瞻; 它将匹配任何不包含两个(或更多)相邻连字符的字符集。 然而,这可能有点慢; 这个正则表达式基本上迫使正则表达式引擎一次考虑一个字符,从那一点向前看,以确保下一个字符不会与反向模式匹配。
尾随$
标志着一条线的终点; 与^
一起确保您在确定匹配时查看单个字符串(或多行数据中的行)中的所有内容。
将其插入Derek Slater's等Regex测试仪中,并使用它来确保它能够停止您想要的所有场景。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.