繁体   English   中英

ASP.Net:RegularExpressionValidator ValidationExpression一次防止`;`和`-`

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM