关于android:regex用于java中的手机号码验证

regex for mobile number validation in java

本问题已经有最佳答案,请猛点这里访问。

我希望电话号码的工作组合为'0'后跟10位数的手机号码(或)0091,后跟10位手机号码(或)+91后跟10位数字。

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

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

你能建议我做一个正则表达式吗?


你似乎想要的确切正则表达式(基于你迄今为止尝试过的)是:

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

RegExr上的工作示例

作为一般提示,为了自己解决这个问题,我建议使用像RegExr或RegexPal这样的网站

将其设置为多行模式(以便^$在每行的末尾匹配)然后将0091+910添加到输入框中的不同行 - 这样你就有了一些东西像这样。

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

1
^0091|\+91|0$

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


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

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


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

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

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


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

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


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

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