empty regex matches any string(空正则表达式与任何字符串匹配)
问题描述
我正在尝试查找与任何字符串匹配的正则表达式!经过一番搜索,我发现几乎所有的答案都说[sS]
将匹配所说的here或.*
所说的here
但在使用PHP时preg_match
我发现空正则表达式与任何字符串都匹配!
if(preg_match("//u", "")) echo "empty string matchs
";
else echo "empty string does not match
";
if(preg_match("//u", "abc")) echo "abc matchs
";
else echo "abc does not match
";
if(preg_match("//u", "
")) echo "new line matchs
";
else echo "new line does not match
";
if(preg_match("//u", "/")) echo "/ matchs
";
else echo "/ does not match
";
exit;
这将输出
empty string matchs
abc matchs
new line matchs
/ matchs
实时演示(https://eval.in/845001)
我可以安全地使用此空正则表达式来匹配任何内容吗?空正则表达式是什么意思?如果您问我为什么需要匹配任何内容的正则表达式,那是因为我使用的函数需要将regex参数作为其字符串验证功能的一部分,并且我希望它接受任何内容。
推荐答案
空正则表达式模式//
与字符串中字符之间的开始、结束和任意位置匹配。在val.inpreg_match_all('//', "foo", $out);
查看此演示,它返回4个空匹配:
Array[0] => [1] => [2] => [3] => )
因为preg_match
只会检查第一个匹配项,所以使用空模式应该可以。但是,通常我可能更喜欢与每个字符串的开头匹配的/^/
。
[sS]
(shorts用于character class中的空格和非空格)表示任意字符,通常还用于匹配没有可用于进行the dot匹配换行符的换行符。通常与JS regex which does not support s
flag连用。类似的有[Dd]
(数字和非数字)、[wW]
(单词字符和非单词字符)。对于JS正则表达式,[^]
"不是什么都不是"的否定空字符类也是可能的。
若要使用/[sS]/
或其他不带限定符的字符之一,至少需要一个字符。
u
标志。可能没有理由将此标志与空模式一起使用,或者只检查字符串的开头。与pcreunicode regex相关的可能是以下转义序列。
X
匹配Unicode字形。在u
模式中类似点(但不是换行符)。C
匹配一个数据单位(similar using the dot withoutu
flag在Unicode输入上)。
嗯,我真的不明白为什么人们需要一个模式来匹配任何字符串,但为了兴趣而写:)
这篇关于空正则表达式与任何字符串匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:空正则表达式与任何字符串匹配


- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01