2

次の正規表現から電話番号を抽出したい。数字を 1 つずつ入力するとすべての電話番号形式が抽出されますが、1 つの文字列に 2 つ以上の数字を入力すると抽出されません。

@"^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$";
4

2 に答える 2

3

もちろん、複数の数字を抽出することはありません。式は で始まり で^終わる$ため、文字列に 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();
}
于 2013-01-13T07:10:40.993 に答える