我发现了一个正则表达式的示例,如果字符串不包含特定单词,该正则表达式将匹配。但是我正在寻找一种匹配的东西,如果它包含一个单词而不是另一个单词。示例:
我正在处理基于RegEx的URL排除。如果网址包含collections
而不包含products
我发现不包含products
的正则表达式是这样的:^((?!products).)*$
效果很好,但是每当我添加支票以确保其中有集合时,它都会失败时间。
以下是我不匹配的示例网址:
https://dummysite.com/collections/frontpage/products/myproduct
但是如果是这样的话
https://dummysite.com/collections/frontpage/
它应该匹配。
如何解决此问题?
答案 0 :(得分:3)
您可以使用正向超前
(?!.*products)(?=.*collections)
| |___________ Positive lookahead ( For must condition)
|___________________________ Negative lookahead ( For must not condition)
let urls = ['https://dummysite.com/collections/frontpage/products/myproduct','https://dummysite.com/collections/frontpage/']
urls.forEach(url=>{
console.log(url, '\nResult --->', /^(?!.*products)(?=.*collections).*$/.test(url))
})