我想在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
任何人都可以帮我这个吗?非常感谢您的帮助。
答案 0 :(得分:2)
你的模式已关闭,你应该使用它:
(?:\{\\d*\})+
在第一个结束括号之前,您似乎对如何告诉正则表达式引擎捕获所有内容感到困惑。可以使用[^}]*
,但也可以使用惰性点.*?
。您的代码似乎同时使用了这两种代码。在这种情况下,我们可以只声明任意数字,因为根据定义,数字不是结束括号。
完整代码:
String input = "{233}{232}{112}{3232}";
if (input.matches("(?:\\{\\d*\\})+")) {
System.out.println("Match!");
}