Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
完全匹配8位数字的Java正则表达式_Java_Regex - Fatal编程技术网

完全匹配8位数字的Java正则表达式

完全匹配8位数字的Java正则表达式,java,regex,Java,Regex,我有一个简单的正则表达式,应该查找8位数字: String number = scanner.findInLine("\\d{8}"); 但事实证明,它也匹配9位或更多的数字。 如何修复此正则表达式以精确匹配8位数字 例如:12345678应该匹配,而 不应使用1234567和123456789。请尝试以下方法: \b被称为单词边界,它会告诉您的正则表达式数字在8之后结束 String number = scanner.findInLine("\\b\\d{8}\\b"); 正则表达式将匹配

我有一个简单的正则表达式,应该查找8位数字:

String number = scanner.findInLine("\\d{8}");
但事实证明,它也匹配9位或更多的数字。 如何修复此正则表达式以精确匹配8位数字

例如:12345678应该匹配,而 不应使用1234567和123456789。请尝试以下方法:

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

String number = scanner.findInLine("\\b\\d{8}\\b");

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

要匹配8个不包含数字的连续数字,您需要使用lookarounds:


String reg=“(?我认为这很简单,而且很有效:

String regEx = "^[0-9]{8}$";
  • ^
    -以开头

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

  • {8}
    -使用8位数字

  • $
    -到此结束。不要在8位数字后添加任何内容


您可以发布应该匹配和不匹配的示例吗?取决于哪个上下文。但是您的示例将在任何8位以上的上下文中匹配,因为它没有锚定或限制任何边界。您不需要在开始时也使用单词边界吗?否则您仍然可以匹配较长数字的最后8位这将永远不会发生在
之间找到8位数字。在所有解决方案中,只有这一个有效,非常感谢,我在3小时后找到了它
String regEx = "^[0-9]{8}$";