2013-11-27 56 views
1

我想要在'0'后加10位数的手机号码(或)0091,后面跟着10位手机号码(或)+91,后面跟着10位数字。正则表达式在java中的手机号码验证

1)0遵循和+91 folowed号码与正则表达式如下工作我也想跟着0091号要工作,我的正则表达式是:

"^([0]|(?:[0][0]|\\+)(91))([7-9]{1})([0-9]{9})$"; 

你可以建议我的工作正则表达式。

+0

不,我还没有尝试过任何 –

+0

你尝试玩弄一个正则表达式的测试网站,如:http://regexpal.com/? – Yaneeve

回答

8

确切的正则表达式,你似乎打算(基于到目前为止你已经尝试了什么)是:

^(?:0091|\\+91|0)[7-9][0-9]{9}$ 
  • 与随之而来的是7 0,+91或0091
  • 开始-9
  • 后紧跟9号
  • 无捕获组
  • 必须匹配整个输入

Working example on RegExr

作为一般的尖,已经这个摸索出自己我会建议使用这样的网站RegExrRegexPal

将其设置为多行模式(让^$在每行的末尾处进行匹配),然后将0091,+910添加到单独行的输入框中 - 因此您有something like this

然后尝试使该只是部分匹配的正则表达式,你的情况,你需要像

^0091|\+91|0$ 

注:RegExr你没有逃跑反斜杠(所以当你使用正则表达式在Java中,你需要通过逃避他们)。

+0

是的,它的工作非常感谢 –

+0

没问题Gowtham – OGHaza

2

如果您在Android上工作,你可以使用此方法: PhoneNumberUtils.isGlobalPhoneNumber("+91.......)

或尝试做这样的事情,如果你真的想用正则表达式:

if (match("^0[0-9]{9}") || match("^+91[0-9]{10}") || match("^0091[0-9]{9}")) 
+0

谢谢你的好逻辑,我给了upvote –

1

使用下面的代码( test.matches(..)是重要的部分):

String test = "00911234567891"; 
    System.out.println(test.matches("(0091|0|\\+91)[7-9][0-9]{9}")); 
+0

对不起,没有工作 –

+0

为什么/究竟是什么?我试了一下,它对于0091 +数字,0 +数字和+91 +数字返回了真。 –

+0

啊我现在看到了这个问题。你区分移动和正常号码。如何识别手机号码? –

0

这个正则表达式应该可以工作。

您可以使用^([0]|\+91)?\d{10}作为开头0+9110之后的数字。

+0

据我所知,OP不希望匹配2(和你的正则表达式2)逗号分隔的数字。 – OGHaza

+0

对不起,我已经有0和+91的工作,我需要0091工作在相同的正则表达式 –

2

想这正则表达式将工作:

^((0091)|(\+91)|(0))([7-9]{1})([0-9]{9})$ 
相关问题