首页 > 解决方案 > 如何使用正则表达式确定字符串是否包含一个子字符串但不包含不同的子字符串?

问题描述

我试图找到一个正则表达式,它会告诉我一个字符串是否包含一个单词但不包含另一个单词。

基本上,我需要找到一种方法来为以下内容返回 true

base?param1=value1&param2=value2

但如果任何值(或者实际上,字符串的任何部分包含Debug

例如:

collect?e=checkout --> true
collect?e=Debug --> false

我需要它作为一个干净的正则表达式,因为我只是想在 Chrome 网络过滤器中使用它。

我试过 /(collect).+(?!Debug.)*/ 但这不起作用

我能得到的最接近的只是 /(?!Debug.)*/ 它省略了字符串中带有 Debug 的任何内容,但不限于那些包含单词“collect”的字符串

标签: javascriptregexdebugging

解决方案


使用(collect).+(?!Debug.)将无法按预期工作,因为您首先匹配collect,然后.+将匹配任何字符 1+ 次,直到字符串结尾。

然后当你在最后时,这个断言(?!Debug.)将是正确的,因为你在最后时没有任何东西在右边。

你可以点的是匹配collect?e=,然后断言直接在右边的不是调试。

collect\?e=(?!Debug\b)

正则表达式演示


推荐阅读