Php 正则表达式-在字符串中查找8位数字
我想使用正则表达式从字符串中提取8位数字 测试字符串是Php 正则表达式-在字符串中查找8位数字,php,regex,preg-match,Php,Regex,Preg Match,我想使用正则表达式从字符串中提取8位数字 测试字符串是 hi 82799162,236232(82342450),测试数据8979 所需的相应输出应为 82799162,82342450,null 我尝试了以下代码: preg_match('/[0-9]{8}$/',$string,$match) preg_match('/\d{8}$/',$string,$match) 但它不会从236232(82342450)中检索数字问题在于$符号,它用于指示表达式的结尾。基本上,用这个表达式,你要寻
hi 82799162
,236232(82342450)
,测试数据8979
所需的相应输出应为
82799162
,82342450
,null
我尝试了以下代码:
preg_match('/[0-9]{8}$/',$string,$match)代码>
preg_match('/\d{8}$/',$string,$match)代码>
但它不会从
236232(82342450)
中检索数字问题在于$
符号,它用于指示表达式的结尾。基本上,用这个表达式,你要寻找一个以8位数字结尾的字符串。但是在第二个测试字符串中<代码>'236232(82342450),以括号结尾,因此不符合标准(不以数字结尾)
因此,删除尾随的$
,它就会工作
preg_match('/[0-9]{8}/',$string,$match);
希望能有帮助 如果正则表达式要准确捕获8位数字,则必须包含:
作为一个中心部分\d{8}
- “before”条件,确保在您的比赛之前没有数字出现
- “之后”条件,确保在比赛后没有数字出现
[0-9]{8}
是不够的,因为它还捕获了
较长的数字序列的前8位。
您对此满意吗?删除尾随的
$
。谢谢,它成功了。我是regex noob。预期结果是什么:123456789
?它应该被丢弃,因为它不完全是8位数长的。顺便说一句,我已经接受了尼梅斯卡的答案。那么你应该接受@Valdi_-Bo的答案。你能帮我吗?第二个选项非常有效,但我想搜索可能包含数字或字母的8位单词,然后以.php结尾,并且必须仅包含8个字符,既不包含7个字符,也不包含6个字符。如果不仅要匹配数字,还要匹配字母,请将\d
更改为[a-z\d]
。然后添加\.php
。因此,整个正则表达式应该是\b[a-z\d]{8}\.php\b
,带有i
(不区分大小写)选项。我假设所提到的字符数与“.php”之前的部分有关。或者整个字符串应该包含8个字符?在这种情况下,正则表达式应该是\b[a-z\d]{4}\.php\b
(4位数字或字母,然后是“.php”,总共8个字符)。
(?<!\d)\d{8}(?!\d)
\b\d{8}\b