Java RegEx - 检查字符串是否以确切的位数结尾



Java match方法为以下所有内容返回'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]

此正则表达式将验证最后 8 个字符是否是yyyyMMdd形式的数字(年份在 20-21 世纪:

.*[^d](19|20)d{2}(0[1-9]|1[0-2])(0[1-9]|[12]d|3[01])$

相关内容

  • 没有找到相关文章

最新更新