[英]Regex - Validate Mobile Phone with Optional Country Code
我目前正在研究正则表达式。 我真的不知道/不知道如何编写带有2个条件的表达式。 还是我必须为每种情况编写2个正则表达式?
我在说的是
我的html字段中有一个txtMobile字段
<label for="txtMobile">Mobile:*</label>
<input id="txtMobile" type="text" name="txtMobile" size="22" maxlength="22">
在我的javascript文件中,我尝试使用以下规则创建表达式
格式:(+ ##)###-###-#### / ####扩展名是可选的,它可以不带国家/地区代码开始。
是否可以在单个表达式中执行任何操作,或者如果我的javascript文件中每种情况的条件都必须键入?
这是我所做的/^([0-9]{3})\\-([0-9]{3})\\-([0-9]{4})\\/([0-9]{4})$/
通过使用?
将组设为可选 意思是“零或前述之一”:
/^([0-9]{3}-)?([0-9]{3})\-([0-9]{4})(\/[0-9]{4})?$/
?
是修饰符,例如*
(前面的零个或多个)和+
(前面的一个或多个)。
这使得这两个组都是可选的,这意味着具有所有三个组成部分(国家代码,号码,分机号)的数字,具有两个可选组成部分(数字+扩展名,国家/地区代码+数字)的数字以及没有任何可选组成部分的数字将被正则表达式接受。
编辑
您在评论中使用正则表达式的错误是?
在逸出 )
,表示零或实际)
之一,而不是一组。 您需要的是:
^(\(\+[0-9]{2}\))?([0-9]{3}-)?([0-9]{3})\-([0-9]{4})(\/[0-9]{4})?$
使用?
表示可选原子。
/^(\(+[0-9]{2}\))?...
在这里,我将前面的组设为可选,并注意到括号是如何将几个原子分组为一个原子。 文字括号被转义。 这是正则表达式的开始,它允许遵循您的格式的可选国家代码。 允许可选的扩展留给读者练习。 :)
像其他家伙说的那样?
匹配进程令牌的0或1。
/^(\(\+\d{1,3}\))?(\d{3}-){2}\d{4}(\/\d{3,4})?$/
火柴:
999-999-9999
(+1)999-999-9999
(+11)999-999-9999
(+111)999-999-9999
999-999-9999/000
(+1)999-999-9999/000
(+11)999-999-9999/000
(+111)999-999-9999/000
999-999-9999/0000
(+1)999-999-9999/0000
(+11)999-999-9999/0000
(+111)999-999-9999/0000
我喜欢使用此工具: http : //gskinner.com/RegExr/
它实现了Flash的RegEx版本,该版本与Javascript并不完全相同。 但这对于大多数工作来说已经足够接近了。 如果有人可以建议使用JS RegEx工具,那就更好了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.