Regex 正则表达式包括某些单词,但不包括另一个单词

Regex 正则表达式包括某些单词,但不包括另一个单词,regex,Regex,我正在尝试编写一个正则表达式,它将检查URL是否包含某些单词,并排除另一个单词 这样做的原因是我试图跟踪通过我的网站的流量,我不想计算任何点击感谢页面的人 例如: http://www.mywebsite.com/register-now/-匹配 http://www.mywebsite.com/contact-us/-匹配 http://www.mywebsite.com/register-now/thank-you-不匹配 http://www.mywebsite.com/contact-

我正在尝试编写一个正则表达式,它将检查URL是否包含某些单词,并排除另一个单词

这样做的原因是我试图跟踪通过我的网站的流量,我不想计算任何点击感谢页面的人

例如:

  • http://www.mywebsite.com/register-now/
    -匹配
  • http://www.mywebsite.com/contact-us/
    -匹配
  • http://www.mywebsite.com/register-now/thank-you
    -不匹配
  • http://www.mywebsite.com/contact-us/thank-you
    -不匹配
  • http://www.mywebsite.com/thank-you
    -不匹配
我有两个词(
立即注册
联系我们
),它们必须在URL中。但是,我必须确保URL中也没有1个单词(
谢谢

我已尝试使用负面前瞻来检查URL是否不包含感谢,但它不起作用:

"^(?!.*\/thank\-you+)\/(contact\-us|register\-now)\/.*"

为简单起见,请分开:

str.match(/(contact\-us|register\-now)/) && !str.match(/thank\-you/)

在单个正则表达式中,可以使用负前瞻:

^(?!.*\/thank-you(?:\/|$))(?:.*\/)?(?:contact-us|register-now)\/

  • (?!.\/thank-you(?:\/|$)
    是负前瞻,如果URL具有
    /thank you
    /thank-you/
    ,则匹配将失败
  • 如果文本每行包含多个URL,请使用多行模式