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

需求:匹配包含foo但不包含bar的正则表达式

正则表达式:校验字符串包含foo且不包含bar

没问题,这就给你搞定这个正则需求!直接上能用的表达式:

^(?=.*foo)(?!.*bar).*$

拆解一下每个部分的作用:

  • ^ 和 $:锚定字符串的开头和结尾,保证我们是对整个字符串做校验,不会漏掉前后的内容
  • (?=.*foo):正向预断言,确保字符串里至少存在一处foo——.*表示任意字符可以出现任意次,所以foo能放在字符串的任何位置
  • (?!.*bar):负向预断言,确保字符串里完全没有bar,不管bar出现在开头、中间还是结尾都不行
  • .*:匹配字符串的剩余内容,前面的预断言已经完成了核心条件的校验,这部分只是把整个字符串覆盖到

用你的示例验证一下:

  • foo → pass(包含foo,无bar)
  • something only with foo → pass(同上)
  • with foo and bar → fail(包含了bar)
  • without fu but bar → fail(没有foo还带了bar)
  • abracadabra → fail(既没foo也没bar)

额外小提示:

如果需要忽略大小写(比如Foo或者BAR也符合条件),可以根据你用的语言加上大小写不敏感的标志:

  • JavaScript里:/^(?=.*foo)(?!.*bar).*$/i
  • Python里:re.compile(r'^(?=.*foo)(?!.*bar).*$', re.IGNORECASE)

内容的提问来源于stack exchange,提问作者Александ Палесика

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:52:54