2016-09-04 8 views
5

Javascript RegExを特定のパターンにのみ適合させる必要があります。 RegExはhtml5 pattern属性で使用され、入力フィールドを検証します。JS RegExで特定のパターンのみを一致させる

私は次のタイプの英数字のパターンを受け入れるようにしたい:

A-AAAAまたはBB-BBBは(意図したパターンがある:前に1桁 - 「 - 」の後、および4桁の数字「」、 「 - 」の前に2桁、「 - 」の後に3桁)。

私の現在の正規表現は次のとおりです。

/([\w]{1,2})(-([\w]{3,4}))/g 

この1つは動作しますが、明らかに有効な入力パターンではなく、意図した模様であるだけでなくCC-CCCCを受け入れます。それはDDD-DDDDも受け入れます。再度有効ですが、意図していません。

パターンを適応させてもらえますか? (それは暗黙のアンカーを持っているとして)

+2

開始と終了のアンカーを使用し、2つのパターンを '|'で区切ります。 https://regex101.com/r/uV8gI4/1#javascript –

+1

@squint 'pattern'正規表現のアンカーは必要ありません。 –

+0

@torazaburo:はい、そうです。いい視点ね! –

答えて

2

あなたはHTML5 pattern属性に交互に基づく正規表現を使用することができます。

/(?:\w-\w{4}|\w{2}-\w{3})/ 

RegEx Demo

+1

'\ b'sのポイントは何ですか?または、非捕獲集団? –

+1

ありがとうございます。この1つは私の問題を解決しました! – Otto

+0

@torazaburo:この正規表現では、単語境界に '\ b'が使用されます。 – anubhava

0

別の簡単な交代例:

/^\w-\w{4}$|^\w{2}-\w{3}$/ 
+0

はい、アンカーは必要ありません。 –

0

は、それは少し短いかもしれません書き込む

/\w(-\w|\w-)\w{3}/ 
関連する問題