You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何用单个正则表达式检测字符串含多个?或连续//

用单个正则实现两种URL异常检测需求

当然可以!完全能用一个正则表达式同时检测这两种情况,我直接给你写好代码,再拆解下背后的逻辑:

实现代码

$str = '/index.php?url=cont\roller//act%ion?id=5';
if(preg_match('/(\?.*\?|\/\/)/', $str)){
    // 执行你的业务逻辑
}

正则逻辑拆解

这个正则用|(逻辑“或”)把两个检测规则拼在一起,分别对应你的两个需求:

  • \?.*\?:专门匹配出现1个以上的问号。\?是转义后的问号(因为正则里?是特殊元字符),.*匹配任意数量的任意字符(默认不包含换行),后面再跟一个\?,就意味着字符串里至少有两个问号。
  • \/\/:直接匹配连续两个及以上的正斜杠。同样,正则里/是特殊字符,所以必须用反斜杠转义,写成\/\/就能精准匹配//这种连续斜杠的情况。

可选优化

如果你的字符串里可能包含换行符,并且需要跨换行匹配多个问号的场景,可以给正则加上s修饰符,让.*能够匹配换行:

if(preg_match('/(\?.*\?|\/\/)/s', $str)){
    // 执行你的业务逻辑
}

这样不管是多问号还是连续双斜杠的情况,这个正则都能准确命中,完美满足你的检测需求~

内容的提问来源于stack exchange,提问作者Emanuel Ones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:07:06