为什么会返回false?
"$10+".matches("^\\\\${0,1}[1-9,\\\\.]{0,}[\\\\+kK]{0,}")
我使用eclipse调试器,因此这是使用\\\\
代替\\
第一次签到与^\\\\${0,1}
的匹配
数字或逗号或点匹配到[1-9,\\\\.]{0,}
最后一个符号+或k或K应与[\\\\+kK]{0,}
但是返回false。为什么呢?
答案 0 :(得分:2)
集合中没有零,应该是:
"$10+".matches("^\\${0,1}[0-9,\\.]{0,}[\\+kK]{0,}"
或者(如果你想在开头有非零):
"$10+".matches("^\\${0,1}[1-9\\.][0-9,\\.]{0,}[\\+kK]{0,}"
此外,它不需要在角色组中逃脱+,对于#34;不确定是否相同。"
答案 1 :(得分:0)
我用JUnit测试了你的表达。
@Test
public void testRegex() throws Exception {
assertTrue("$10+".matches("^\\${0,1}[0-9,\\\\.]*[\\\\+kK]*"));
}
现在回归真实。我通过*。
更改您的选项{0,}