当前位置: 首页 > 知识库问答 >
问题:

验证android的电话号码

葛季萌
2023-03-14

我想弄清楚这个验证手机号码到我的Android系统是如何工作的。

我已经添加了代码和whant来验证46123456789,但最后一个号码(9)没有添加到电话号码中。

我用的是:

/**
     * @param phone
     * @return The number which satisfies the above criteria, is a valid mobile Number.
     * The first digit should contain number between 0 to 9.
     * The rest 9 digit can contain any number between 0 to 9.
     * The mobile number can have 11 digits also by including 0 at the starting.
     * The mobile number can be of 12 digits also by including 46 at the starting
     */
    public static boolean isValidPhoneNumber(String phone) {
        phone = trimPhoneNumber(phone);
        // The given argument to compile() method
        // is regular expression. With the help of
        // regular expression we can validate mobile
        // number.
        // 1) Begins with 0 or 46
        // 2) Then contains 6 or 7 or 8 or 9.
        // 3) Then contains 9 digits
        Pattern p = Pattern.compile("(0/46)?[0-9][0-10]{9}");

        // Pattern class contains matcher() method
        // to find matching between given number
        // and regular expression
        Matcher m = p.matcher(phone);
        return (m.find() && m.group().equals(phone));
    }

    public static String trimPhoneNumber(String phone) {
        if (TextUtils.isEmpty(phone)) {
            return phone;
        } else {
            try {
                phone = phone.replace("+46", "");
                phone = phone.replaceAll("[^0-9]", "");//replace all except 0-9
                return phone;
            } catch (Exception e) {
                e.printStackTrace();
                return phone;
            }
        }
    }

我是不是错过了什么

共有1个答案

陈实
2023-03-14

使用以下模式:

^\s*(?:(?:\+?46)|0)(?:\d){9,10}\s*$

^在开始和$在结束确保模式匹配整个输入

\s*修剪任何空格或制表符\d捕获任何数字

(?:\d){9,10}表示模式(?:\d)应该重复9到10次。

"模式以(4646)或0开头,后跟9或10位数字。

如果它可以包含-或数字之间的空格,请使用:

^\s*(?:(?:\+?46)|0)(?:[- ]*\d){9,10}\s*$

你可以在这里测试正则表达式

 类似资料:
  • 我是HTML,有谁能帮我验证一个电话号码只有'+'和数字值和电话号码不超过13个数字,并验证电子邮件与'@'和‘。我不想使用javascript

  • 我在验证电话号码时遇到了问题。电话号码是一个10位数的字符串,应该填充在三个输入字段中第一个输入字段--仅有3位数(要求,只能接受数字和最大长度3)第二个输入字段--仅有3位数(要求,只能接受数字和最大长度3)第三个输入字段--仅有4位数(要求,只能接受数字和最大长度4)

  • 问题内容: 我在某些网站上找到了此代码,并且效果很好。它验证电话号码是以下格式之一: (123)456-7890 或 123-456-7890 问题是我的客户(我不知道为什么,也许是客户的东西)想添加另一种格式,即连续十个数字,如下所示: 1234567890 。 我正在使用这个正则表达式, 如何添加它还可以验证另一种格式?我对正则表达式不好。 问题答案: 首先,您的格式验证器显然仅适用于NANP

  • 问题内容: 想要将电话号码设置为 10 位数字,如何使用Angular js做到这一点。 这是我尝试过的: 但是我没有收到验证错误。 问题答案: 试试这个:

  • 问候覆花, 我试图编写一个正则表达式来验证形式为#########(10位)的电话号码,也就是说,这是有效的情况:1231231234或1111111。无效大小写是指小于10位或大于10位的数字串。 到目前为止,我使用的表达式是:“\d{10}” 不幸的是,它不能正确验证字符串是否为11位数。 有人知道实现这个任务的表达式吗?

  • 我正在使用HTML5表单验证来验证来自印度的电话号码。 null null 建议一个模式,可以检测有效的印度电话号码。 到目前为止,我的模式是,但它不检查第一个数字是7、8还是9。