用于java中移动号码验证的正则表达式

时间:2013-11-27 13:16:36

标签: java android regex

我希望电话号码为“0”后跟10位手机号码(或)0091,10位手机号码(或)+91后跟10位数字。

1)0跟随和+91以下的数字正在使用以下正则表达式我也希望0091跟随数字工作,我的正则表达式是:

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

你能否建议我使用正则表达式。

5 个答案:

答案 0 :(得分:7)

你似乎想要的确切正则表达式(基于你到目前为止所尝试的)是:

^(?:0091|\\+91|0)[7-9][0-9]{9}$
  • 从0开始,+ 91或0091
  • 其次是7-9
  • 紧跟9个数字
  • 没有捕获组
  • 必须匹配整个输入

Working example on RegExr

作为一般提示,为了自己解决这个问题,我建议您使用RegExrRegexPal等网站

将其设置为多行模式(以便^$在每行末尾匹配)然后添加0091+91和{{1}进入单独行的输入框 - 所以你有something like this

然后尝试制作一个匹配该部分的正则表达式,在您的情况下,您需要类似

的内容
0

注意:在RegExr上你不必转义反斜杠(所以当你在java中使用正则表达式时,你需要通过转义它们)。

答案 1 :(得分:2)

猜猜这个正则表达式会起作用:

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

答案 2 :(得分:1)

如果您使用的是Android,则可以使用以下方法: PhoneNumberUtils.isGlobalPhoneNumber("+91.......)

如果您真的想使用正则表达式,请尝试做类似的事情:

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:-1)

这个正则表达式应该可行。

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