2016-09-02 13 views
-1

(010)12345678または010-12345678のような式に一致させたいと思います。今私の正規表現は\(?\d{3}[)-]\d{8}ですが、一致する式は(010-12345678のようになります。真の正規表現をどのように書くべきですか?は、電話番号と一致する正規表現が必要です

EDIT:

私は私のニーズを満たすことができ(\(\d{3}\)|[^(]\d{3}-)\d{8}などの権利正規表現を記述します。

+0

*本当の正規表現*を書いてみると少し難しいかもしれません。 '|'交代演算子のことを聞いたことがありますか? –

+1

私のニーズを満たすことができる '(\(\ d {3} \)| [^(] \ d {3} - )\ d {8}'のような正しい正規表現を書いてください – GerBawn

+0

素晴らしいですが、完全な文字列の一致を必要とするregexメソッド内で使用しない限り、\ d {3}¥\ d {3} \ d {8} $ ' '、またはHTML5パターン)。正規表現をどこで使用していますか? –

答えて

1

(\(\d{3}\)|[^(]\d{3}-)\d{8}は、[^(]のために-の数字の前に、(と一致します。あなたはそれを削除し、

(\(\d{3}\)|\d{3}-)\d{8} 
^^^^^^^^^^^^^^^^^^ 

を使用する必要が

demoを参照してください。またはアンカーバージョン:

^(\(\d{3}\)|\d{3}-)\d{8}$ 

another demo

パターンが詳細を参照してください:

  • ^ - 文字列の先頭
  • (\(\d{3}\)|\d{3}-)から2つの選択肢のいずれかに一致するグループ1: を
    • \(\d{3}\) - 又は
    • \d{3}- - - 3桁、リテラル-
  • \d{8}から8桁の数字
  • $ - 文字列の末尾(は3桁、リテラル)
  • |と続きます。
  • 正規表現エンジンによって

\d[0-9]と交換する必要がある場合があります。