首页 > 解决方案 > URL 匹配正则表达式:正面和负面术语

问题描述

我正在尝试在 URL 匹配正则表达式中匹配否定和肯定术语。

“Word1”和“Word2”是负数,“Word3”是正数。URL 必须包含肯定关键字,并且没有要匹配的否定关键字。

https://example.net

https://example.net/word3 - 匹配

https://example.net/word3/word2 - 不匹配

https://example.net/word3/word1 - 不匹配

目前我也将主页排除在外,但对于正面匹配,我认为这将是不必要的。

^((?!(word1|word2|http(s?):\/\/example\.net\/?($|[?#][&=#+%0-9a-zA-Z]+$))).)*$

如何在一个字符串中使用正负匹配?

标签: regex

解决方案


您可以使用以下正则表达式:

^(?=.*word3)(?!.*word(?:1|2)).*$

它首先匹配startof 字符串,然后使用正数look aheadfor 'word3',然后使用negative look aheadfor'word'后跟 1 或 2。

最后它匹配字符串的其余部分(如果它通过了测试)。


推荐阅读