2016-11-09 557 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}) 

无论你是想锚表达行限制(^$)或检查开头或结尾空格或类似显然取决于你的情况。