Java,正则表达式涉及" {n}"量词

时间:2018-02-20 06:22:45

标签: java

有谁知道为什么以下代码接受123-123-1234

等答案

[1-9]\\d{2}-[1-9]\\d{2}-\\d{4}

我想到了代码,它只接受 2个数字,2个数字再次接受 4个数字,如下所示: 12-12-1234< - 但这对代码[1-9]\\d{2}-[1-9]\\d{2}-\\d{4}

无效

我使用以下方法对此进行了测试:

    String numbers = "123-123-1234";

    if(numbers.matches("[1-9]\\d{2}-[1-9]\\d{2}-\\d{4}")) {
        System.out.println("String object \"numbers\" is valid.");
    }
    else {
        System.out.println("String object \"numbers\" is invalid.");
    }

感谢您的反馈,如果这篇文章中没有足够的信息,请告诉我。

4 个答案:

答案 0 :(得分:3)

子表达式(插入空间以提高可读性):

[1-9] \d{2}
----- -----
  |     |
  |     + Two digits [0-9]
  +-- One digit [1-9]

本身接受三位数,但第一位数不能为零。

答案 1 :(得分:1)

Rick Measham's site解释正则表达式:

[1-9]\d{2}-[1-9]\d{2}-\d{4}

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  [1-9]                    any character of: '1' to '9'
--------------------------------------------------------------------------------
  \d{2}                    digits (0-9) (2 times)
--------------------------------------------------------------------------------
  -                        '-'
--------------------------------------------------------------------------------
  [1-9]                    any character of: '1' to '9'
--------------------------------------------------------------------------------
  \d{2}                    digits (0-9) (2 times)
--------------------------------------------------------------------------------
  -                        '-'
--------------------------------------------------------------------------------
  \d{4}                    digits (0-9) (4 times)

答案 2 :(得分:0)

  • [1-9]匹配1到9
  • 范围内的单个字符
  • \d{2}匹配数字正好2次
  • -一次匹配字符-

下一个[1-9]\d{2}-与上面相同,最后一个

  • \d{4}匹配一个数字正好4次

所以RegEx [1-9]\d{2}-[1-9]\d{2}-\d{4} macthes 123-123-1234

答案 3 :(得分:0)

表达式[1-9]\d{2}-[1-9]\d{2}-\d{4}表示A char in range 0 to 9 two digits - A char in range 0-9 two digits - four digits

正确的正则表达式\d{2}-\d{2}-\d{4}转换为two digits - two digits - four digits

等效的java代码numbers.matches("\\d{2}-\\d{2}-\\d{4}")