繁体   English   中英

使用正则表达式在Java中进行字符串验证

[英]String validation in java using regex

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

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

用于验证的代码是:

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

但是它将匹配带有或不带有斜杠的任何整数,我想排除不带有斜杠的整数。如何仅匹配有效模式?

看来您想查找number带有一个或多个 /number number (一个或多个数字的序列- \\d+ )。 如果是这种情况,那么您可以将正则表达式写为

\\d+(/\\d+)+

你可以试试

                                        (\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 )
\\b\\d+(/\\d+){1, 3}\\b

\\ b是单词边界。 这将匹配所有带有1-3斜杠的标记,斜杠被数字包围,而令牌被单词边界包围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM