1

入力文字列があります (「私の電話番号は 860-678 - 2345 です」)。入力文字列から、正規表現を使用して電話番号を検証する必要があります。

以下のパターンを使用していますが、電話番号に空白が含まれていると機能しません。

[(]?[2-9]{1}[0-9]{2}[)-. ,]?[2-9]{1}[0-9]{2}[-. ,]?[0-9]{4}

ありがとう。

4

4 に答える 4

1

次の正規表現:

(\([2-9]\d\d\)|[2-9]\d\d) ?[-.,]? ?[2-9]\d\d ?[-.,]? ?\d{4}

次のすべてに一致します。

860-678-2345
(860) 678-2345
(860) 678 - 2345

そしておそらく他にもかなりの量です。内訳:

  • (\([2-9]\d\d\)|[2-9]\d\d)- 括弧の有無にかかわらず、数字の最初の部分に一致します
  •  ?[-.,]? ?- ハイフン、ピリオド (または英国人にとってピリオド) またはコンマ (周囲のスペースの有無にかかわらず)。
  • [2-9]\d\d- 数字の 2 番目の部分に一致します。
  • \d{4}- 数字の最後の部分に一致します。

\d\d[0-9]{2}は同等です。前者はわずかに短いため、読みやすさが向上します。同様に、[2-9][2-9]{1}は同等です。{1}just は「前のパターンの 1 つのインスタンス」を意味しますが、これはとにかく与えられたものです。

于 2013-09-19T22:11:31.360 に答える
0

区切り文字の前後に別々にスペースをチェックできます。

[(]?[2-9]{1}[0-9]{2}[ ]?[)-.,]?[ ]?[2-9]{1}[0-9]{2}[ ]?[-.,]?[ ]?[0-9]{4}

これは実際には括弧と一致しないため、次のようなもの(234-567, 1234が一致することに注意してください。したがって、より厳密な一致が必要な場合は、はるかに複雑な正規表現が必要になるか、別のものを使用して検証をコーディングする必要があります。

于 2013-09-19T21:13:18.920 に答える
0

これはあなたを助けるかもしれません:

(?\d{3})?-? *\d{3}-? *-?\d{4}

参照: 正規表現ライブラリー

于 2014-09-15T05:16:44.853 に答える
0

最善の方法は、最初にすべての空白を削除することです。そうすれば、実行した RE で番号を簡単に確認できます。

于 2013-09-19T21:19:48.357 に答える