javascript - 如何使用正则表达式确定字符串是否包含一个子字符串但不包含不同的子字符串?
问题描述
我试图找到一个正则表达式,它会告诉我一个字符串是否包含一个单词但不包含另一个单词。
基本上,我需要找到一种方法来为以下内容返回 true
base?param1=value1¶m2=value2
但如果任何值(或者实际上,字符串的任何部分包含Debug
例如:
collect?e=checkout --> true
collect?e=Debug --> false
我需要它作为一个干净的正则表达式,因为我只是想在 Chrome 网络过滤器中使用它。
我试过 /(collect).+(?!Debug.)*/ 但这不起作用
我能得到的最接近的只是 /(?!Debug.)*/ 它省略了字符串中带有 Debug 的任何内容,但不限于那些包含单词“collect”的字符串
解决方案
使用(collect).+(?!Debug.)
将无法按预期工作,因为您首先匹配collect
,然后.+
将匹配任何字符 1+ 次,直到字符串结尾。
然后当你在最后时,这个断言(?!Debug.)
将是正确的,因为你在最后时没有任何东西在右边。
你可以点的是匹配collect?e=
,然后断言直接在右边的不是调试。
collect\?e=(?!Debug\b)
推荐阅读
- python - Python fork:如果进程消耗超过 50% 的可用性,则“无法分配内存”。记忆
- sql - 我收到“不允许列”错误
- android - CRNA 构建:android 问题
- java - 如何通过UTC偏移量获取时区?
- swift - 如何在具有特定高度的表格视图中加载数据
- android - 从长按菜单剪切、复制和粘贴看起来像 Material 按钮
- java - 如何更改 IntelliJ IDEA 的快照通道
- django - Django 测试 - 未创建多个数据库?
- c# - 如何在 C# 中使用带有 Max() 的 LINQ Select
- javascript - 在 (Angular)TypeScript 中使用 FileReader 读取文本文件