我正在尝试编写一个正则表达式,它将检查包含某些单词的URL并排除另一个单词。
原因是我正在尝试跟踪通过我网站的流量,我不想算任何人点击感谢页面。
例如:
http://www.mywebsite.com/register-now/
- MATCH http://www.mywebsite.com/contact-us/
- MATCH http://www.mywebsite.com/register-now/thank-you
- 没有比赛http://www.mywebsite.com/contact-us/thank-you
- 没有比赛http://www.mywebsite.com/thank-you
- 没有比赛我有2个字(register-now
和contact-us
),这些字必须在网址中。但是,我必须确保1个字(thank-you
)也不在URL中。
我曾尝试使用否定前瞻来检查网址是否包含感谢信,但它不起作用:
"^(?!.*\/thank\-you+)\/(contact\-us|register\-now)\/.*"
答案 0 :(得分:2)
在单个正则表达式中,您可以使用否定前瞻:
(?!.*\/thank-you(?:\/|$))
/thanks-you
或/thank-you/
,则MULTILINE
为否定匹配将导致匹配失败。答案 1 :(得分:0)
为简单起见分开:
str.match(/(contact\-us|register\-now)/) && !str.match(/thank\-you/)