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输入上)。
嗯,我真的不明白为什么人们需要一个模式来匹配任何字符串,但为了兴趣而写:)
这篇关于空正则表达式与任何字符串匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:空正则表达式与任何字符串匹配
基础教程推荐
- Libpuzzle 索引数百万张图片? 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01