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