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