1

JavaScript で正規表現を使用して、フォーム テキスト入力の値がフランスの携帯電話番号であるかどうかをテストしようとしています。

06フランスの携帯電話番号はまたはで始まり07、次のように 8 桁の数字が続きます:0611223344または0744332211. これらの番号の国際形式は、次のよう+33に、最初の を置き換えるもので始まります0:+33611223344または+33744332211.

この RegEx : を使用して(\+\b33|\b0)[67][0-9]{8}\bいます。これは、入力が +336/7 または 06/7 で始まり、その後に 8 桁が続くかどうかをテストします。

Word Boundary ( \b) を追加したので、06112233440611223344 (2 つの連結された正しい形式) のような数字は一致しません。

この正規表現は、これらのケースでうまく機能します:

0611223344 // matches
0744332211 // matches
+33611223344 // matches
+33744332211 // matches
06112233440744332211 // doesn't match

しかし、私はまだこれらの入力で問題が発生しています:

+33611223344+33611223344
0611223344 0744332211
0744332211+33611223344
0744332211 +33611223344

みんな似合ってる…

可能な限りすべての方法で正規表現に追加しようとし^まし$たが、これらの記号のいずれかを追加すると、正規表現が機能しなくなります。

4

2 に答える 2

1

以下の正規表現を使用して、すべてのフランスの電話番号に一致させることができます。

^(?:(?:0|\+33)(?:6|7))\d{8}$

デモ

06 21 05 65 48この形式の数字と一致させたい場合は、以下の正規表現を使用してください+33 6 21 05 65 48

^(?:(?:(?:0|\+33)(?:6|7))\d{8}|0[67](?: \d{2}){4}|\+33 [67](?: \d{2}){4})$

デモ

于 2014-09-04T09:07:57.357 に答える
0
^(\+\b33|\b0)[67][0-9]{8}$

正規表現は正常に機能します。アンカーを追加するだけです。

デモを参照してください。

http://regex101.com/r/pP3pN1/35

于 2014-09-04T09:11:36.450 に答える