【发布时间】:2017-08-13 22:55:34
【问题描述】:
我试图找到一个匹配任何字符串的正则表达式!经过一番搜索,我发现几乎所有的答案都说[\s\S] 将匹配任何字符串,如here 或.* 所述here
但在玩了一下 PHP preg_match 时,我发现一个空的正则表达式匹配任何字符串!
if(preg_match("//u", "")) echo "empty string matchs\n";
else echo "empty string does not match\n";
if(preg_match("//u", "abc")) echo "abc matchs\n";
else echo "abc does not match\n";
if(preg_match("//u", "\n")) echo "new line matchs\n";
else echo "new line does not match\n";
if(preg_match("//u", "/")) echo "/ matchs\n";
else echo "/ does not match\n";
exit;
这将输出
empty string matchs
abc matchs
new line matchs
/ matchs
现场演示 (https://eval.in/845001)
我可以安全地使用这个空的正则表达式来匹配任何东西吗?空的正则表达式是什么意思?
如果你问我为什么需要一个匹配任何东西的正则表达式,那是因为我使用的函数需要一个正则表达式参数作为它的字符串验证功能的一部分,我希望它接受任何东西。
【问题讨论】:
-
不匹配字符串的正则表达式不是正则表达式。只需执行
if($string == "")或if (strlen($string)== 0) -
@Ibu 谢谢。但我必须将任何正则表达式传递给验证字符串的函数。
-
你的第一个条件应该是先检查字符串是否为空,然后进入正则表达式
标签: php regex preg-match