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

标签 java regex quantifiers

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/

相关文章:

java - 为什么第 4 行不生成未经检查的异常?

java - Java 中的 AES-256 加密需要多大的初始化 vector ?

javascript - 这两个正则表达式有什么区别? (理解?量词)

regex - "Quantifier quantifies nothing"但我从未要求量词

java - 插入 sql 时将 comboBox 值替换为数字

java - 带随机数生成器的 HiLo 游戏

java - 我需要一个根据变量匹配数字的正则表达式

用于手机号码验证的正则表达式

java - 正则表达式不工作

prolog - 如何在序言中找到所有普遍事实?