我正在研究正则表达式。我真的不知道/理解如何编写具有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 :(得分:0)
使用?
表示组是可选的,这意味着“零或前一个”:
/^([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})?$
答案 1 :(得分:0)
使用?
表示可选原子。
/^(\(+[0-9]{2}\))?...
这里我使前面的组可选,并注意括号如何将几个原子组合成一个原子。字面括号被转义。这是一个正则表达式的开头,它允许使用您的格式后面的可选国家/地区代码。允许可选的扩展留给读者作为练习。 :)
答案 2 :(得分:0)
与其他人一样,?
匹配前进令牌的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工具,那就更好了。