如何创建一个正则表达式来查找确切的字符串长度?

The*_*Dr. 5 java regex

有这些案件:

  • 12345678901234
  • 123456789012345
  • 1234567890123456
  • 12345678901234567

我需要找到具有15个字符长度的字符串.

到现在为止我制作了这段代码:

String pattern = "(([0-9]){15})";
Mathcer m = new Mathcer(pattern);
if (m.find()){
    System.out.println(m.group(1));
}
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

  • 12345678901234(未找到哪个)
  • 123456789012345(发现哪个)
  • 1234567890123456(发现哪个不好)
  • 12345678901234567(发现哪个不好)

我怎么能创建一个正则表达式,它可以给我15个结果,就像我认为这个正则表达式可以给我一样.超过15是不可接受的.

Mar*_*ulz 8

使用^$锚标记字符串的开头和结尾:

String pattern = "^([0-9]{15})$";
Run Code Online (Sandbox Code Playgroud)
  • ^匹配字符串开头的位置
  • $匹配字符串末尾的位置

没有这些锚点,您只需在字符串中的任何位置查找15个连续数字.匹配字符串可以另外包含更多数字(甚至包含字母),但仍然匹配.

(另外,你内心对括号是多余的-我已经删除它.如果你所访问,而不是由第一组捕获的值,你甚至可以发出其他括号整场比赛的价值."^[0-9]{15}$")

Regex101演示

  • 小心,通常,`\ d`**不等于`[0-9]`,例如在.NET中:https://blog.mariusschulz.com/2015/10/21/matching-digits-in -net正则表达式 (3认同)