preg_match表达式包括空格

时间:2014-02-06 11:07:42

标签: php regex preg-match whitespace

所以我试图解析从外部网页中提取的一系列数字。

preg_match('#([0-9]{3}\s[0-9]{3}\s[0-9]{3}){1}#', $element, $match);

不会返回任何结果,尽管echo元素显示正确的表达式:

341 102 408 AAA Bccc

当然,当我在网上regexp测试人员上面用以上字符串尝试上面的正则表达式时,我得到了预期的结果...... 我在想,可能有一个看不见的角色代替白色空间但找不到它。我真的很疯狂......

修改

奇怪的是,这确实删除了我想要提取的表达式的输入字符串EXCEPT的每个空格:

$element = preg_replace("/\s/", "", $element);

1 个答案:

答案 0 :(得分:2)

尝试

preg_match('#([0-9]{3}\s+[0-9]{3}\s+[0-9]{3}){1}#u', $element, $match);

使正则表达式引擎支持Unicode,并允许数字之间有多个空白字符;也许你有一些非ASCII空格。

那就是说,你可以把它减少到

preg_match('#(?:[0-9]{3}\s+){2}[0-9]{3}#u', $element, $match);

如果成功,您将在$match[0]中找到匹配结果。