2012-03-14 80 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”。这可能适用于此,但需要您提供通用替换类型。

我希望这会有所帮助。