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

RegExp lookahead前瞻(?=、?!)使用问题:匹配含investing和news的链接逻辑错误

负向正则的错误原因

你写的/(?!.*investing)(?!.*news)/的逻辑是两个关键词都不存在才匹配,和你需要的「两个关键词没有同时存在」逻辑完全不符:

  • 逻辑上「同时包含A和B」的否定是「缺少A 或者 缺少B」,不是「既缺A又缺B」
  • 你写的负向正则是两个负向预查并列,属于逻辑与关系,要求两个条件同时满足:既不能存在investing,也不能存在news,所以只缺其中一个关键词的链接(比如有investing没news,或者有news没investing)都不会被这个正则匹配,不符合你的预期。

正确的负向正则写法

如果要写和!positiveTest(x)完全等价的正则,有两种实现方式:

写法1:直接否定正向匹配的整体逻辑

const correctNegativeTest = x => /(?!(?=.*investing)(?=.*news))/.test(x)

逻辑为:不满足「同时存在两个关键词」的情况就匹配,完全符合你要的校验规则。

写法2:按“或”逻辑拆分负向条件

const correctNegativeTest = x => /(?!.*investing)|(?!.*news)/.test(x)

逻辑为「没有investing 或者 没有news」,和「不同时存在两个关键词」等价,也能达到预期效果。

测试结果验证

用你给出的三个测试链接验证的话,返回结果符合预期:

  • https://br.investing.com/news/:同时有两个关键词,负向测试返回false
  • https://br.investing.com/nws/:只有investing,负向测试返回true
  • https://br.inveting.com/news/:只有news,负向测试返回true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:45:04