我正在构建一个通用的正则表达式验证器,它接受一个值进行比较,并返回true或false,判断它是否匹配。验证器与自定义控件绑定,因此输入会自动从属性中检索。我想知道.NET是否在正则表达式中具有字符串替换的语法。我不是说使用Regex.Replace方法,我的意思是使用实际的正则表达式作为用其他东西替换文本的机制。我可以这样做:
return Regex.IsMatch(control.Text, "some regex with replacement logic built in");
更具体地说,我希望我的正则表达式删除所有非数字值,然后确保它在多个字符内。
答案 0 :(得分:3)
'MatchEvaluator Delegate'可能会对您有所帮助,尽管它没有明确说明您的要求;看看......
Regex.Replace
有一个重载,需要MatchEvaluator
委托,每个匹配调用一次。这允许您在正则表达式语法不够表达时委托C#代码中替换字符串的内容。例如:
Console.WriteLine(Regex.Replace("5 is less than 10", @"\d+",
m => (int.Parse(m.Value) * 10).ToString()));
输出“5小于100”。这可能适用于此,但要求您提供通用替换类型。
我希望这会有所帮助。