我试图为国家/地区代码编写正则表达式,该代码最多应限制为四个字符,只允许符号为+符号。当使用+时,+必须在开头,并且它应该至少有一个数字。
有效案例
+1
1
+12
12
+123
1234
无效案例
+
+1234
12345
1+
12+
<empty>
etc.
我现在的表达。
/(\+\d{1,3})/
它可以更优雅吗?
- 提前感谢你!!
答案 0 :(得分:7)
这应该有效。我用了
/^(\+?\d{1,3}|\d{1,4})$/
编辑:
// 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的javascript正则表达式/^\+(\d{1}\-)?(\d{1,3})$/