2013-02-21 212 views
0

我用这个正则表达式来验证巴西手机:可能包含8或9个数字的正则表达式 - 如何操作?

/^(\([0-9]{2}\))\s([9]{1})?([0-9]{4})-([0-9]{4})$/ 

输出:(31) 8876-3234 VALID

但是圣保罗状态具有9个数字蜂窝电话:

输出SP(31) 98876-3234

当前正则表达式需要调整以接受也是有效的,a提示我应该改变什么?

+0

该正则表达式已经匹配额外的领先9. – 2013-02-21 19:28:13

+0

适用于我没有任何改变。 http://regexr.com?33s2j – Achrome 2013-02-21 19:28:16

+0

顺便说一句,你可以使用'\ d'而不是'[0-9]'来简化你的正则表达式。另外'[9] {1}'是一个只包含一个字符并且重复一次的字符类,就像只写'9'一样。 – matts 2013-02-21 19:30:22

回答

4

您可以使用{m,n}量词来创建范围:

/^(\([0-9]{2}\))\s([0-9]{4,5})-([0-9]{4})$/ 

虽然你的正则表达式似乎要被罚款,因为它有一个可选的9 4个位数之前相匹配。但是,如果有任何可能的地方,除了9之外,你可以使用这个正则表达式。

+0

该死的,我怎么会在我的搜索中错过? >。>非常感谢! - 在10分钟内接受答案 – 2013-02-21 19:29:14

+0

@ user2056484。不客气:) – 2013-02-21 19:30:30

+0

在一个非相关话题中,你知道一个简单的方法:当我点击一个被屏蔽的输入字段(带有预定义的字段)时,总是转到第一个字符而不是从中间开始它? – 2013-02-21 19:31:43

相关问题