正则表达式以页面为目标,但不定位其子页面



我正在尝试编写一个正则表达式来定位URL,而不是它的任何子级。我的正则表达式肯定很弱,可以使用一些帮助。

我要定位的页面(可能包括尾部斜杠和/或 UTM 参数(:https://test.com/deals/我不想定位的网页示例:https://test.com/deals/Best-Sellers/c/901

我的尝试:

.*Deals/((?!Best).)*

您可以使用/deals/?(?:[?#]S*)?$

检查正则表达式101

这比您的问题建议的更宽容一些,但它可能会派上用场。

最主要的是它试图在行尾匹配/deals。这可确保您不会匹配,例如https://test.com/best-deals或类似,而只会匹配以/deals结尾的 URL。此外,最后的/是可选的 - 您可能会得到https://test.com/deals

除此之外,正则表达式还允许 URL 以#锚点或?结尾,后跟参数。该页面现在或将来可能允许这样做 - 例如,如果使用指向同一页面(例如特定部分(的链接,则会在URL中添加#。或者 URLhttps://test.com/deals/?sort=price&productsPerPage=15&page=2&minPrice=100中可能嵌入了类似过滤器配置的内容。

最后,您应该使您的正则表达式大小写不敏感,以解释 URL 也可能https://test.com/Deals/的事实。如何设置此标志将取决于您使用正则表达式的位置,因此我只是将其添加为提醒。

最新更新