使用regex在java中进行字符串验证

时间:2014-08-19 13:31:05

标签: java regex

我必须验证一组字符串并对其进行处理。可接受的格式是:

1/2
12/1/3
1/23/333/4

用于验证的代码是:

if (str.matches("(\\d+\\/|\\d+){2,4}")) {
    // do some stuff
} else {
    // do other stuff
}

但它会匹配任何带或不带斜线的整数,我想排除没有斜线的整数..我怎样才能匹配有效的模式?

3 个答案:

答案 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斜线的标记,斜线由数字包围,标记由字边界包围。