我的任务是使用正则表达式验证一个字符串,如果匹配成功则执行替换操作,否则抛出异常。
显然,我可以先使用Regex.IsMatch
验证是否匹配成功,然后再调用Regex.Replace
进行替换,或者抛出异常:
var str = "89991112233";
var pattern = @"(?<prefix>8|\+?\d+)\s*(?<code>\d{3,3})\s*(?<phone>\d{7,7})";
var replace = "+7 ${code} ${phone}";
if (!Regex.IsMatch(str, pattern))
throw new Exception();
else
return Regex.Replace(str, pattern, replace);
但是它需要进行两个相同的匹配操作。
在.Net中,我可以执行正则表达式检查并在单个调用中获取字符串是否匹配和替换吗?