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

如何使用正则表达式在字符串任意位置匹配多个任意顺序的模式?

匹配任意顺序多模式的正则表达式写法

要同时匹配多个任意顺序的子串,最常用的方案是正向肯定预查(Positive Lookahead),这种写法简洁且兼容性好。

比如你需要匹配同时包含foo、bar、bat和baz的字符串(顺序不限),对应的正则表达式可以写成:

^(?=.*foo)(?=.*bar)(?=.*bat)(?=.*baz).*$

拆解说明:

  • ^ 和 $:锚定整个字符串的开头和结尾,确保我们匹配的是完整字符串(如果不需要匹配整个串,可以去掉这两个锚点)
  • (?=.*foo):正向预查,检查字符串中存在foo子串,.*用来跳过foo之前的任意字符
  • 每个(?=.*xxx)都独立检查对应子串的存在,彼此互不干扰,所以子串的出现顺序不影响匹配结果
  • .*$:匹配预查通过后剩下的所有字符(如果用了锚点,这部分是必须的,否则正则只做检查不会匹配内容)

额外注意事项:

  • 如果需要不区分大小写匹配,可根据正则引擎添加对应修饰符,比如JS中写成:
    /^(?=.*foo)(?=.*bar)(?=.*bat)(?=.*baz).*$/i
    
  • 如果要匹配的子串包含正则特殊字符(比如.、*、?等),需要用反斜杠\转义,比如匹配foo.bar要写成(?=.*foo\.bar)

内容的提问来源于stack exchange,提问作者cat pants

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 18:04:49