次の正規表現から電話番号を抽出したい。数字を 1 つずつ入力するとすべての電話番号形式が抽出されますが、1 つの文字列に 2 つ以上の数字を入力すると抽出されません。
@"^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$";
もちろん、複数の数字を抽出することはありません。式は で始まり で^
終わる$
ため、文字列に 1 つの電話番号以外のものが含まれている場合、正規表現は一致しません。
1 つの解決策は、これらの開始文字と終了文字を削除し、ループして一度に 1 つずつ数字を抽出することです。
Regex rePhone = new Regex(@"\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d");
Match m = rePhone.Match(inputString);
while (m.Success)
{
string phone = m.Value;
m = m.NextMatch();
}