正则表达式 - 在字符串中查找 8 位数字

Regex - Find 8 digit number in string

我想使用正则表达式从字符串中提取 8 位数字。

测试字符串是

hi 82799162, 236232 (82342450), test data 8979

所需的相应输出应为

82799162, 82342450, null

我试过以下代码:

但它不会从 236232 (82342450) 中检索号码。

问题出在您的 $ 符号上,它用于指示表达式的结尾。所以基本上,使用该表达式,您正在寻找一个以 8 位数字结尾的字符串。但是在你的第二个测试字符串中; '236232 (82342450)',以括号结尾,因此不符合条件(不以数字结尾)。

所以删除尾随 $ 就可以了。

preg_match('/[0-9]{8}/',$string,$match);

希望对您有所帮助!!

如果正则表达式要捕获 正好 8 位数字,则必须包含:

  • \d{8}作为中心部分,
  • 一个 "before" 条件,确保 你的匹配之前没有数字出现,
  • 一个 "after" 条件,确保没有数字出现 你的匹配之后。

一种可能的解决方案是使用负向后视 / 前视:

(?<!\d)\d{8}(?!\d)

另一种选择是词边界断言(在两端):

\b\d{8}\b

我认为,像 [0-9]{8} 这样的正则表达式是不够的,因为它还捕获 前 8 位数字 来自 更长的 数字序列。 你满意吗?