これを最後に追加するだけで、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,})?
それでもあなたの電話番号と一致しますが、上記のような延長を強制することはありません
これをオプションにしてExtを使用しないようにするには、Extを使用する必要があります。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;
}
)