用于匹配包含一个词并排除另一个词的 URL 的正则表达式
RegEx for matching a URL containing one word and excluding another
我发现了一个正则表达式的例子,如果一个字符串不包含特定的词,它就会匹配。但我正在寻找匹配的东西,如果它包含一个词而不是另一个词。示例:
我正在处理基于 RegEx 的 URL 排除项。如果 URL 包含 collections
而不是 products
,我希望它匹配
如果不包含 products
,我发现可以工作的 Regex 是这样的:^((?!products).)*$
每次都失败。
这是一个示例url我希望它不匹配:
https://dummysite.com/collections/frontpage/products/myproduct
但如果是:
https://dummysite.com/collections/frontpage/
它应该匹配。
如何解决这个问题?
您可以使用正面前瞻
(?!.*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))
})
我发现了一个正则表达式的例子,如果一个字符串不包含特定的词,它就会匹配。但我正在寻找匹配的东西,如果它包含一个词而不是另一个词。示例:
我正在处理基于 RegEx 的 URL 排除项。如果 URL 包含 collections
而不是 products
如果不包含 products
,我发现可以工作的 Regex 是这样的:^((?!products).)*$
每次都失败。
这是一个示例url我希望它不匹配:
https://dummysite.com/collections/frontpage/products/myproduct
但如果是:
https://dummysite.com/collections/frontpage/
它应该匹配。
如何解决这个问题?
您可以使用正面前瞻
(?!.*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))
})