簡體   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