国家代码的正则表达式

时间:2016-11-09 16:34:21

标签: javascript regex

我试图为国家/地区代码编写正则表达式,该代码最多应限制为四个字符,只允许符号为+符号。当使用+时,+必须在开头,并且它应该至少有一个数字。

有效案例

+1
1
+12
12
+123
1234

无效案例

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

我现在的表达。

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

它可以更优雅吗?

- 提前感谢你!!

4 个答案:

答案 0 :(得分:7)

这应该有效。我用了

/^(\+?\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"

答案 1 :(得分:3)

您需要区分案例。有或没有前导加号:

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

是否要将表达式锚定到行限制(^$)或检查前导或尾随空格等,显然取决于您的情况。

答案 2 :(得分:1)

我是根据wikipedia article编写的,用于解析1或2位国家/地区代码的正确信息,这样效率更高,但是如果需要,需要对子区域进行改进;

(?:\+|00)(1|7|2[07]|3[0123469]|4[013456789]|5[12345678]|6[0123456]|8[1246]|9[0123458]|(?:2[12345689]|3[578]|42|5[09]|6[789]|8[035789]|9[679])\d)

答案 3 :(得分:1)

国家代码可以是以下类型

  • +1
  • +91
  • +223
  • + 1-224

如果输入为

,则确保输入为1的javascript正则表达式
/^\+(\d{1}\-)?(\d{1,3})$/