繁体   English   中英

Java 正则表达式验证由括在括号中的逗号分隔数字的重复序列组成的字符串

[英]Java regex validate a string consisting of repeated sequences of comma separated digits enclosed in parentheses

我有一个包含重复模式的输入,如下所示:

 (3,5)(6,7)(8,9).....

我正在研究一个正则表达式来验证上述字符串模式。

我试过了:

Pattern.compile("\\((\\d+),(\\d+)\\)")

如果你有一个特定的模式可能在一个字符串中重复一次或多次,并且你想确保你的字符串只包含相同模式的重复出现,你可以使用

^(?:YOUR_PATTERN)+$
\A(?:YOUR_PATTERN)+\z

请注意, $也在最后一个换行符之前匹配,这就是为什么当您需要匹配字符串的最末尾时首选\z锚点的原因。

如果您允许空字符串,请使用*量词而不是+

^(?:YOUR_PATTERN)*$
\A(?:YOUR_PATTERN)*\z

在这种情况下, YOUR_PATTERN\(\d+,\d+\) ,因此,重复序列验证模式将是\A(?:\(\d+,\d+\))+\z

在 Java 中,您可以在使用.matches()方法验证字符串时省略^ / $\A / \z锚点,因为它需要完整的字符串匹配:

boolean isValid = text.matches("(?:\\(\\d+,\\d+\\))+");

或者,首先标记Pattern class 实例,然后使用字符串作为输入创建匹配器并运行Matcher#matches()

Pattern p = Pattern.compile("(?:\\(\\d+,\\d+\\))+");
Matcher m = p.matcher(text);
if (m.matches()) {
    // The text is valid!
}

暂无
暂无

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

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