2017-02-22 6 views
0

次の正規表現はregex101.comで試しても正常に見えますが、JavaScript(両方のブラウザ& nodej)では動作しません。Javascript/NodeJS Regex(phone nr)無効なグループエラー

(?i)(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?) 

javascriptには正しい正規表現はありますか?

P.S:

いくつかの例ここ:

650-283-4757 
+1 6502834757 
+33 4 76095663 
06 2070 2220 
(650)-283-4757 ext 897 
+355 693502415 
+0

正規表現はどのような動作が期待されていますか? – robert

+2

regex101でJS regexをテストするときは、JSモードに切り替える必要があります。 JS regexではインライン修飾子がサポートされていないので、 '(?i)'が不具合部分として表示されます。 –

答えて

2

ため、インライン修飾子(?i)のです。 JSは正規表現のパターンに含まれる修飾子をサポートしません。

/(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?)/i 

は、だから、最初のグループの先頭に疑問符が無効な文字である/

+0

非常に速い:)。できます。 –

+0

@TediÇelaあなたがそれを好きなら、Avinashの答えを受け入れてください。 –

+0

@コブスクルーガーそれは非常に迅速だったので、私は答えを受け入れることができませんでした:)。私は、私が10分以内に答えを受け入れることを禁止しました。 –

1

デリミタパターンの隣に修飾子を追加する必要があります。

無効

(?i)(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?) 

たぶん、あなたは "非キャプチャ" として、最初のグループをマーク

(?:i)(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?) 

を意味しました。

それとも、ケースを無視する正規表現をマーク

/(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?)/i 

を意味しました。

次回はregexr.comで正規表現をテストすることを深くお勧めします

+0

regexrを深くお勧めしますが、regex101をJSモードで使用する場合のメリットは何ですか? –

関連する問題