2016-11-09 556 views
2

我想寫一個正則表達式的國家代碼,應限制爲最多四個字符,只允許符號是+號。當使用+時,+必須在開頭,並且它應該至少有一個數字。正則表達式的國家或地區代碼

有效的情況下

+1 
1 
+12 
12 
+123 
1234 

無效的情況下

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

,我現在所擁有的表達。

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

它可以更優雅嗎?

- 謝謝您提前!

回答

5

這應該工作。我用

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

See results

編輯:

的// GM標誌分別全球。如果您有一個字符串可以有多個地方來匹配國家/地區代碼,或者您的字符串中有多行,則需要這些字符。如果你的字符串不僅僅是一個可能的國家代碼,你需要在正則表達式的開始和結尾處去掉^$。要使用正則表達式,你需要這樣的事情:

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}) 

無論你是想錨表達行限制(^$)或檢查開頭或結尾空格或類似顯然取決於你的情況。