常规表达式电话号码不得以555开头

时间:2018-03-13 18:35:35

标签: java regex validation numbers

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MatchPhoneNumbers {
    public static void main(String[] args) {

        String sPhoneNumber = "5568889999";
        // String sPhoneNumber = "605-88899991";
        // String sPhoneNumber = "605-888999A";

        Pattern pattern = Pattern.compile("^(?![5][5][5]).*$&\\d([2-9]{9})");
        // Pattern pattern = Pattern.compile("^[^555]\\d{7}|\\d([2-9]{9})");

        // ^[^0-9]+$
        Matcher matcher = pattern.matcher(sPhoneNumber);

        if (matcher.matches()) {
            System.out.println("Phone Number Valid");
        } else {
            System.out.println("Phone Number must be in the form XXXXXXXXXX");
        }
    }
}

我想要在输入556时返回有效的电话号码,如果前3位数字是555,则返回false。 另外,我不希望第一个数字为0或1 我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

要匹配您的数字格式,您可以使用:

^(?![01]|555)\d{10}$

在Java中:

^(?![01]|555)\\d{10}$

那将匹配:

  • ^字符串的开头
  • (?!断言后面的否定前瞻不是
    • [01]匹配0或1
    • |
    • 555按字面意思匹配
  • )关闭否定前瞻
  • \d{10}匹配10位数字
  • $字符串的结尾

Demo Java