只需将其添加到末尾,它将是您的第 11 组(除非它实际上有 2 位数或更多位数,否则它不会接听分机
(\d{2,})
代码将是:
Regex.Replace(phone,
@"^\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d{2,})$",
"+1 $1$2$3-$4$5$6-$7$8$9$10 Ext $11");
如果这是可选的,请执行以下操作:
(\d{2,})?
它仍然会匹配您的电话号码,但不会像上面那样强制分机
要使这个可选也不使用分机,那么你需要使用MatchEvaluator
像这样的东西(但我面前没有编译器,所以它可能会偏离一点,应该进行测试)
Regex.Replace(phone,
@"^\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d{2,})$",
"+1 $1$2$3-$4$5$6-$7$8$9$10 Ext $11");
match =>
{
var returnVal = "+1 ";
for(int i = 1; i <= 3; i++)
{
returnVal += match.Groups[i].Value;
if(i == 3 || i == 6)
returnVal += "-";
}
returnVal += match.Groups[11].Success ? " Ext " + match.Groups[11] : "" )
return returnVal;
}
)