Java 正则表达式 - 检查字符串是否以精确的数字结尾
Java RegEx - check if a string ends with an exact number of digits
Java 匹配方法 returns '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 次检查为 return 'false',但他们没有。我如何强制执行精确匹配(仅 8 位数字。不多也不少)?
感谢您的帮助。
这应该有效:
.*[^\d]\d{8}$
或者如果 Java 正则表达式引擎支持 \D
组,您可以使用它代替 [^\d]
This regex 将验证最后 8 个字符是 yyyyMMdd
形式的数字(年份在 20-21 世纪内:
.*[^\d](19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])$
Java 匹配方法 returns '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 次检查为 return 'false',但他们没有。我如何强制执行精确匹配(仅 8 位数字。不多也不少)?
感谢您的帮助。
这应该有效:
.*[^\d]\d{8}$
或者如果 Java 正则表达式引擎支持 \D
组,您可以使用它代替 [^\d]
This regex 将验证最后 8 个字符是 yyyyMMdd
形式的数字(年份在 20-21 世纪内:
.*[^\d](19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])$