繁体   English   中英

正则表达式-使用可选的国家/地区代码验证手机

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM