0

電話番号の検証に次の正規表現を使用しています

/^(?!([^-]*-){5})(\+\d+)?\s*(\(\d+\))?[- \d]+$/gi

入力が+51(0)989009890であると仮定すると、それは有効です。ただし、入力が0051(0)989009890の場合。私はREGEXを初めて使用するため、可能な解決策を見つけることができませんでした。

電話番号は、以下の形式の場合に有効です。

  1. 0xxxxxxxxxxx
  2. + xx xxxxxxxxxxx
  3. + xxxxxxxxxxxxx
  4. + xx(x)xxxxxxxxxx
  5. 00xxxxxxxxxx
  6. 00xx(x)xxxxxxxxx

ここで、xは0〜9の数字を示します。()内の数字には最大3つの制限があります。

4

2 に答える 2

2

あなたも受け入れるつもりなら0051 (0) 989009890、問題は(+ \ d +)?入力の括弧の前のビットを処理することを目的としていますが、「+」が存在する必要があります。次のように、「?」を使用してオプションにすることで、これを変更できます。

/^(?!([^-]*-){5})(\+?\d+)?\s*(\(\d+\))?[- \d]+$/gi

または、「00xxx」を「+ xxx」の代わりに使用する必要がある場合(つまり、「+」または「00」のいずれかがそこに存在する必要がある場合)、次を使用できます。

/^(?!([^-]*-){5})(\+\d+|00\d+)?\s*(\(\d+\))?[- \d]+$/gi
于 2013-01-25T17:10:14.527 に答える
1

これがあなたが探しているものだと思います

^(?!([^-]*-){5,})(\+?\d+)?\s*(\(\d{1,3}\))?\s*[- \d]+$
于 2013-01-25T17:14:07.493 に答える