2017-03-07 13 views
2

私は以下の正規表現を持っています。JavaScript正規表現で左か右カッコが存在する場合はかっこに一致します

var reg2= /^(\d?)[-. ]?[(]?(\d{3})[)]?[- ]?(\d{3})[- ]?(\d{4})$/g; 

私がいる問題は、私は無効返す他に、それは括弧を検出した場合、それが有効であるために、他の括弧を必要とするという通常の急行を作成するのですbelow.How入力のための有効な私REG2リターンです。

"555)-555-5555" 
"(555-555-5555" 
"1 555)555-5555" 

編集

それは通常の

15556667777 
1-555-666-7777 
1 555 666 7777 

答えて

1

で動作するはず同時にあなたは、あなたが唯一の一致する括弧または全く括弧を一致させるための、この正規表現を使用することができます。

/^\d?[-. ]*(?:\(\d{3}\)|\d{3})[- ]*\d{3}[- ]*\d{4}$/ 

(?:\(\d{3}\)|\d{3})電話番号の先頭に(111)または111を許可するように交互に行われます。

RegEx Demo

+0

は、私は$との違いは何であるかを尋ねことができます '(?:\(\ D {3} \)| \ dの{3})'と '(\(\ dの{3} \ )| \ d {3}) 'となります。明白な違いは$ '?:'でしょう。違いがなければ、$ ':'は特に何のために使われますか? –

+0

'(?:...)'は非キャプチャグループで、 '(...)'はキャプチャグループです。非捕捉グループを使用することは、全体的な効率の点でより良いと考えられる。 – anubhava

+1

ああ、あなたの権利。それは完璧だった。ありがとうございました。 –

関連する問題