完全匹配8位数的Java RegEx

jar*_*sik 5 java regex

我有一个简单的RegEx,它应该寻找8位数字:

String number = scanner.findInLine("\\d{8}");
Run Code Online (Sandbox Code Playgroud)

但事实证明,它也匹配9位以上的数字.如何修复此RegEx以匹配8位数?

例如:12345678应该匹配,而1234567和123456789不应该匹配.

Dal*_*rzo 6

尝试这个:

\b 被称为词边界,它会告诉你的正则表达式数字在 8 之后结束

String number = scanner.findInLine("\\b\\d{8}\\b");
Run Code Online (Sandbox Code Playgroud)


Wik*_*żew 6

您的正则表达式将匹配字符串中任意位置的8位数字,即使这8位数后面还有其他数字.

要匹配8个连续数字(未用数字括起来),您需要使用外观:

String reg = "(?<!\\d)\\d{8}(?!\\d)";
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

说明:

  • (?<!\d) - 如果8位数字之前有数字,则会出现失败的负面后视
  • \d{8} 8位数
  • (?!\d)- 如果在与\d{8}子模式匹配的8位数字后面有一个数字,则表示匹配失败的否定前瞻.


小智 6

我认为这很简单并且有效:

String regEx = "^[0-9]{8}$";
Run Code Online (Sandbox Code Playgroud)
  • ^ -以数字开头

  • [0-9]-仅使用数字(也可以使用\d

  • {8} -使用8位数字

  • $-到此为止。8位数字后请勿添加任何内容。