无法在java中通过正则表达式验证字符串?

无法在java中通过正则表达式验证字符串?,java,regex,Java,Regex,我想用java中的正则表达式验证字符串{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 有人能帮我吗?非常感谢您

我想用java中的正则表达式验证字符串
{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


有人能帮我吗?非常感谢您的帮助。

您的模式已关闭,您应该使用以下功能:

(?:\{\\d*\})+
在第一个结束括号之前,您似乎对如何告诉regex引擎捕获所有内容有些困惑。可以使用
[^}]*
,但也可以使用惰性点
*?
。您的代码似乎同时使用了这两种方法。但在这种情况下,我们可以使用任意数量的数字,因为根据定义,数字不是右大括号

完整代码:

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

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

您的图案已关闭,您应该使用以下选项:

(?:\{\\d*\})+
在第一个结束括号之前,您似乎对如何告诉regex引擎捕获所有内容有些困惑。可以使用
[^}]*
,但也可以使用惰性点
*?
。您的代码似乎同时使用了这两种方法。但在这种情况下,我们可以使用任意数量的数字,因为根据定义,数字不是右大括号

完整代码:

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

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

Pattern.compile(“(\{([^{}]*.?)\})*”)也许?Pattern.compile((\{([^{}]*.?)\})*”)也许?这仍然通过了他所说的失败的{xx}{YY}测试,它还应该检查它是否也是一个数字(?:{[^}\D]*})+@PraveenRawat我的名字不是
Tin,但是感谢反馈。抱歉@TimBiegeleisen拼写错误这仍然通过了{xx}{YY}测试,他说应该失败,它还应该检查它也是一个数字(?:{[^}\D]*})+@PraveenRawat我的名字不是
Tin
,但是感谢反馈。抱歉@TimBiegeleisen拼写错误