2012-03-14 75 views
2

我正在構建一個通用正則表達式驗證器,它接受一個值來比較並返回true或false,表示它是否匹配。驗證程序綁定到自定義控件,因此輸入會自動從屬性中檢索。我想知道.NET是否在正則表達式中有字符串替換的語法。我不是指使用Regex.Replace方法,我的意思是使用實際的正則表達式作爲一種機制來替換其他文本。這樣,我可以這樣做:在.NET中使用正則表達式替換字符串

return Regex.IsMatch(control.Text, "some regex with replacement logic built in"); 

更具體地說,我想我的正則表達式來刪除所有的非數字值,然後確保它的字符數內。

+0

你是用某些東西替換非數字值還是刪除它們? – Jetti 2012-03-14 15:14:13

+0

我只是刪除它們 – 2012-03-14 15:15:29

+0

聽起來像你想要一個單線,但問題是,你需要兩條線。如果你可以先使用regex.replace刪除非數字字符,然後在'all numeric characters?'上運行一個匹配,這似乎不會太糟糕。表達。儘管如此,您可能可以將您的UI切換爲使用蒙版文本框並節省很多麻煩。 – djdanlib 2012-03-14 15:16:00

回答

3

'MatchEvaluator委託人'可能會幫助你,雖然它不明確你所要求的;看看...

Regex.Replace有一個超載,需要一個MatchEvaluator委託,每個匹配調用。這使您可以在正則表達式語法不夠豐富的情況下,使用C#代碼委託替換字符串的內容。例如:

Console.WriteLine(Regex.Replace("5 is less than 10", @"\d+", 
    m => (int.Parse(m.Value) * 10).ToString())); 

給出的輸出「5小於100」。這可能適用於此,但需要您提供通用替換類型。

我希望這會有所幫助。