您必须考虑“至少一位数”的要求,这在正则表达式中转换为
\d+ - 需要在 Java 字符串中转义额外的 \
例子:
public void test() {
final List<String> testCases = Arrays.asList("a-45",
"45-a",
"45-45",
"a-aaa4",
"aaa4a-bbb5",
"a4aa-a etc",
"a-a",
"b-b");
final String regex = "[a-z]*\\d+[a-z]*";
final String leftMatch = regex + "-.*";
final String rightMatch = ".*-" + regex;
for (String string : testCases) {
System.out.println(string + " : " + string.matches(leftMatch + "|" + rightMatch));
}
}
结果:
a-45 : true
45-a : true
45-45 : true
a-aaa4 : true
aaa4a-bbb5 : true
a4aa-a etc : true
a-a : false
b-b : false