2011-10-11 32 views
0

我想做一個ASP.Net RegularExpressionValidatorValidationExpression這將阻止輸入;–-。我可以做,它是ValidationExpression="[^-]*"ASP.Net:RegularExpressionValidator ValidationExpression一次阻止`;`和`-`

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" 
     runat="server" 
     ControlToValidate="TextBox1" Display="Dynamic" ErrorMessage="**" 
     ValidationExpression="[^-]*"></asp:RegularExpressionValidator> 

以上表達式可以防止單個的字符。我會給予單個角色的許可。我會阻止雙重個字符(--)。 我需要一次防止;

任何人都可以幫助我嗎?

+1

http://en.wikipedia.org/wiki/Regular_expression –

回答

2

正則表達式需要變得更聰明。您想阻止多個連字符,m-dash和分號。

所以,儘量@"^(?=[^–;]*)((?!--).)*$"

其分解:

^一行的開頭匹配,並有助於確保驗證用於整個字符串相匹配。

第一組圓括號中的表達式將匹配任何不包含m-dash和分號的字符集。您可能需要使用\x2014轉義序列替換m-dash的十六進制值。它被定義爲非消耗的?=,這意味着正則表達式引擎必須匹配這個模式,但是當它找到匹配時不會推進它的索引,所以同樣的一組字符也將被測試下一個模式。

第二組圓括號中的表達式是反向預測;它將匹配任何不包含兩個(或更多)相鄰連字符的字符集。然而,這可能有點慢。這個正則表達式基本上會迫使正則表達式引擎一次一個地考慮每個字符,從這個角度展望未來,以確保下一個字符不會匹配逆向模式。

尾隨$標誌着一條線的終點;與^一起確保您在確定匹配時查看單個字符串(或多行數據中的行)中的所有內容。

將此插入到像Derek Slater's這樣的正則表達式測試程序中,並使用它來確保它將停止所有您想要的場景。

+0

感謝您的幫助... –