电话号码validationAndroid

如何检查电话号码是否有效? 它长到13(包括前面的字符+ )。

我怎么做?

我试过这个:

 String regexStr = "^[0-9]$"; String number=entered_number.getText().toString(); if(entered_number.getText().toString().length()<10 || number.length()>13 || number.matches(regexStr)==false ) { Toast.makeText(MyDialog.this,"Please enter "+"\n"+" valid phone number",Toast.LENGTH_SHORT).show(); // am_checked=0; }` 

我也试过这个:

 public boolean isValidPhoneNumber(String number) { for (char c : number.toCharArray()) { if (!VALID_CHARS.contains(c)) { return false; } } // All characters were valid return true; } 

两者都不起作用。

inputtypes: + sign to be accepted and from 0-9 numbers and length b/w 10-13 and should not accept other characters

  • 如何限制TextView只允许Android中的字母数字字符
  • 如何显示类似于TextView.setError()的微调控件的validation错误
  • Android:如何在EditText中设置可接受的数字和字符?
  • 移动应用程序:如何显示我的应用程序在不离开我的应用程序的情况下popup的OTP?
  • 在Android设备上生成客户端证书
  • Android上的电子邮件validationEditText
  • 使用Android AccountManager对服务器的用户进行身份validation
  • yyyy-mm-dd的正则expression式日期validation
  • 根据您指定的规则:

    长达13,包括字符+盈方。

    (并且在你的代码中包含10的最小长度)

    你会想要一个像这样的正则expression式:

     ^\+[0-9]{10,13}$ 

    用正则expression式编码的最小和最大长度,你可以从你的if()块中删除这些条件。

    偏离主题:我build议10-13的范围对于国际电话号码字段来说太限制了; 你几乎肯定会发现有效的数字比这更长,更短。 我build议8 – 20的范围是安全的。

    [编辑] OP指出由于转义序列,上述正则expression式不起作用。 不知道为什么,但另一种select是:

     ^[+][0-9]{10,13}$ 

    [编辑2] OP现在添加+符号应该是可选的。 在这种情况下,正则expression式在+之后需要一个问号,所以上面的例子看起来像这样:

     ^[+]?[0-9]{10,13}$ 

    使用isGlobalPhoneNumber()方法来检测一个号码是否是有效的电话号码。

     System.out.println("....g1..."+PhoneNumberUtils.isGlobalPhoneNumber("+912012185234")); System.out.println("....g2..."+PhoneNumberUtils.isGlobalPhoneNumber("120121852f4")); 

    第一个打印语句的结果是真的,而第二个结果是错误的,因为第二个电话号码包含f

    你可以使用android的内置Patterns

     public boolean validCellPhone(String number) { return android.util.Patterns.PHONE.matcher(number).matches(); } 

    这种模式的目的是寻找的东西,看起来像他们可能是电话号码在任意文本,而不是validation是否事实上是一个电话号码。 它会错过许多合法的电话号码。

    该模式匹配以下内容:

    • 可选的,一个+号后跟一个或多个数字。 随后可能会出现空格,点或破折号。
    • 可选地,括号中的数字组由空格,点或破折号分隔。
    • 以数字开头和结尾的string,包含数字,空格,点和/或破折号。

    要validationAndroid中特定地区的电话号码,请使用Google的libPhoneNumber ,以下面的代码为例:

     public boolean isPhoneNumberValid(String phoneNumber, String countryCode) { //NOTE: This should probably be a member variable. PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); try { PhoneNumber numberProto = phoneUtil.parse(phoneNumber, countryCode); return phoneUtil.isValidNumber(numberProto); } catch (NumberParseException e) { System.err.println("NumberParseException was thrown: " + e.toString()); } return false; } 

    你也可以检查电话号码的validation

      /** * Validation of Phone Number */ public final static boolean isValidPhoneNumber(CharSequence target) { if (target == null || target.length() < 6 || target.length() > 13) { return false; } else { return android.util.Patterns.PHONE.matcher(target).matches(); } } 

    如果您的手机格式是所描述的格式之一,则可以使用PhoneNumberUtils 。 如果没有任何效用函数符合您的需求,请使用常规扩展。

    我们可以使用模式来validation它。

    android.util.Patterns.PHONE

     public class GeneralUtils { private static boolean isValidPhoneNumber(String phoneNumber) { return !TextUtils.isEmpty(phoneNumber) && android.util.Patterns.PHONE.matcher(phoneNumber).matches(); } } 

    你可以使用这个库 。 所有你需要做的是通过你想要validation的国家和电话号码。

    validation电话号码时不应使用正则expression式。 看看这个JSON API – numverify.com – 如果一个月打电话并且能够检查任何电话号码,那么这对于一个nunver来说是免费的。 此外,每个请求都附带了位置,线路types和运营商信息。