无法通过java中的regex验证字符串?

时间:2018-03-26 05:47:45

标签: java regex

我想在java中使用regex验证字符串{233}{232}{112}{3232}。我正在使用Pattern.compile("\\{([^\\}]*.?)\\}"),但我无法验证此字符串。

在字符串中,多个id由花括号分隔,ID必须为数字。

一些测试用例:

测试案例1:{122}{323} //true

测试案例2:{122}323} //false

测试案例3:{122323} //true

测试案例4:{122},{323} //false

测试案例5:{xx}{YY} //false

任何人都可以帮我这个吗?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

你的模式已关闭,你应该使用它:

(?:\{\\d*\})+

第一个结束括号之前,您似乎对如何告诉正则表达式引擎捕获所有内容感到困惑。可以使用[^}]*,但也可以使用惰性点.*?。您的代码似乎同时使用了这两种代码。在这种情况下,我们可以只声明任意数字,因为根据定义,数字不是结束括号。

完整代码:

String input = "{233}{232}{112}{3232}";

if (input.matches("(?:\\{\\d*\\})+")) {
    System.out.println("Match!");
}

Demo