有谁知道为什么以下代码接受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.");
}
感谢您的反馈,如果这篇文章中没有足够的信息,请告诉我。
答案 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}")