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有更多的数字,我期望第二个和第三个检查返回“false”,但它们没有。我该如何强制进行完全匹配(仅限8位数字,不多也不少)?
感谢您的帮助。
.*_\d{8}$
。为了使它更通用一些,你可以使用[^\d]
(任何不是数字的字符)代替“_”字符。 - Kirill Polishchuk