Java matches 方法为以下所有内容返回“true”
// check if a string ends with an exact number of digits (yyyyMMdd 8 digits)
String s20180122_1 = "fileNamePrefix_20171219";
String s20180122_2 = "fileNamePrefix_20171219131415111";
System.out.println(s20180122_1.matches(".*\\d{8}$"));
System.out.println(s20180122_2.matches(".*\\d{8}$"));
System.out.println(s20180122_2.matches(".*\\d{8,8}$"));
由于 s20180122_2 有更多数字,我希望第 2 次和第 3 次检查返回“false”,但它们没有。我如何强制执行完全匹配(仅 8 位数字。不多也不少)?
感谢您的帮助。
最佳答案
这应该有效:
.*[^\d]\d{8}$
或者如果 Java 正则表达式引擎支持 \D
组,您可以使用它代替 [^\d]
关于Java RegEx - 检查字符串是否以精确的数字结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48391306/