我必须验证一组字符串并对其进行处理。可接受的格式是:
1/2
12/1/3
1/23/333/4
用于验证的代码是:
if (str.matches("(\\d+\\/|\\d+){2,4}")) {
// do some stuff
} else {
// do other stuff
}
但它会匹配任何带或不带斜线的整数,我想排除没有斜线的整数..我怎样才能匹配有效的模式?
答案 0 :(得分:3)
您希望在其后面找到{em>一个或多个 number
\d+
(一个或多个数字系列 - /number
)。如果是这种情况,那么您可以将正则表达式写为
\\d+(/\\d+)+
答案 1 :(得分:1)
你可以尝试
(\d+/){1,3}\d+
digits followed by / one to three times----^^^^^^ ^^------followed by digit
示例代码:
System.out.println("1/23/333/4".matches("(\\d+/){1,3}\\d+")); // true
System.out.println("1/2".matches("(\\d+/){1,3}\\d+")); // true
System.out.println("12/1/3".matches("(\\d+/){1,3}\\d+")); // true
模式说明:
( group and capture to \1 (between 1 and 3 times):
\d+ digits (0-9) (1 or more times)
/ '/'
){1,3} end of \1
\d+ digits (0-9) (1 or more times )
答案 2 :(得分:0)
\\b\\d+(/\\d+){1, 3}\\b
\ b是单词边界。这将匹配所有带有1-3斜线的标记,斜线由数字包围,标记由字边界包围。