如何验证电话号码

时间:2016-08-06 02:28:38

标签: java

我正在尝试验证java中的电话号码。在我的国家,电话号码以9或8开头,只有8个号码。我做完了

CA2CT

但是我需要验证数字的第一个数字不是9或8的时候。我不完全确定我应该怎么做。请解释您的代码如何运作,因为我是一名学生,我正在努力学习。

4 个答案:

答案 0 :(得分:2)

以防您正在寻找正则表达式解决方案。

您可以使用以下模式keyerror:0来执行检查。

基本上它的作用是什么;

  1. 从第一个角色位置^(?=(?:[8-9]){1})(?=[0-9]{8}).*
  2. 向前看,看第一个字符是8还是9 ^
  3. 然后查看是否总共有8个数字(?=(?:[8-9]){1})
  4. 如果上述条件匹配,则将其标记为匹配(?=[0-9]{8})

  5. .*

    <强>输出:

      

    有效的电话号码!

答案 1 :(得分:1)

将字符串放在一起的方法可以在String和Character类中找到。

以下是一个可以满足您需求的示例程序:

public class Foo {

    public static void main(String[] args) {
        // First try null and the empty string
        System.out.println(isValidPhoneNumber(null));
        System.out.println(isValidPhoneNumber(""));
        // Now try an otherwise valid string that doesn't have the right first character
        System.out.println(isValidPhoneNumber("01234567"));
        // Now try an invalid string
        System.out.println(isValidPhoneNumber("9a934581"));
        // Finally a valid number
        System.out.println(isValidPhoneNumber("94934581"));
    }

    static boolean isValidPhoneNumber(String phoneNo) {
        // First validate that the phone number is not null and has a length of 8
        if (null == phoneNo || phoneNo.length() != 8) {
            return false;
        }
        // Next check the first character of the string to make sure it's an 8 or 9
        if (phoneNo.charAt(0) != '8' && phoneNo.charAt(0) != '9') {
            return false;
        }
        // Now verify that each character of the string is a digit
        for (char c : phoneNo.toCharArray()) {
            if (!Character.isDigit(c)) {
                // One of the characters is not a digit (e.g. 0-9)
                return false;
            }
        }
        // At this point you know it is valid
        return true;
    }
}

它产生的输出是:

false
false
false
false
true

最终for-each循环可以避免使用带有显式计数器的for循环重新检查第一个字符,但是不检查单个int的性能增益不会超过更干净的代码和更好的可读性对于每个构造。

编辑:另请注意,我已从原始问题中删除了验证错误消息,以便提高可读性,因为OP要求解释代码正在执行的操作。

答案 2 :(得分:0)

您可以查看phoneNo的第一个字符:

if (phoneNo.charAt(0) != '9' && phoneNo.charAt(0) != '8') {
    // the first character is not a 9 or an 8
}

来自Oracle的charAt文档。

答案 3 :(得分:0)

不是在Integer变量中取电话号码而是将其带入String变量。 然后使用stringVariable.charAt(0)

检查第一个数字是否为9,8

并且对于电话号码的长度,使用int len = stringVariable.length();