2016-11-09 14 views
2

私は最大4文字に制限する国コードの正規表現を書こうとしていますが、許可される記号は+記号だけです。 +を使用する場合、+は最初にある必要があり、少なくとも1つの数字を持つ必要があります。国コードの正規表現

有効な例

+1 
1 
+12 
12 
+123 
1234 

無効な場合、私が今持っている

+ 
+1234 
12345 
1+ 
12+ 
<empty> 
etc. 

表現。

/(\+\d{1,3})/ 

もっとエレガントにできますか?

-事前におねがいします!

答えて

5

これは動作するはずです。

// GMフラグはそれぞれ、グローバル複数行です:私は

/^(\+?\d{1,3}|\d{1,4})$/ 

See results

編集]を使用していました。国コードと一致する複数の場所を持つことができる文字列がある場合、または文字列に複数の行がある場合は、それらが必要です。あなたの文字列が単なる国別コード以上のものになる場合は、正規表現の先頭と最後に^$を取り除く必要があります。正規表現を使用するには、次のようなものが必要です。

var regex = /^(\+?\d{1,3}|\d{1,4})$/gm 
var str = "+123" 
var match = str.match(regex); 
//match is an array, with one result in this case. So match[0] == "+123" 
+0

ニックにお問い合わせいただきありがとうございます。 –

+0

/gmフラグが何であるか教えてください。実際のコードではどうすればよいですか? –

+0

@VamshiGudipati私は自分の編集で説明しました。それはあなたの弦がどのように見えるかによって異なりますが、私はそれを全体的にかなりうまく説明したと思います。一度正規表現を使用すると、さまざまな方法で一致させるには[this](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match)を参照してください。 –

2

大文字と小文字を区別する必要があります。どちらかまたはプラス記号を招くことなく:

(\+\d{1-3})|(\d{1,4}) 

あなたが行の制限(^$)に表現を固定または先頭または空白を末尾などをチェックするかどうかは明らかにあなたの状況に依存します。