Regex-网站url中包含两个单词的表达式



我需要regex,它将在同时包含两个单词的站点上运行。例如www.boots.com/**sport**/**nike**我在另一个问题中发现了类似的东西:

^(?=.*bnikeb)(?=.*bsportb).*$

这是正确的吗?第一个单词是一个类别,所以它介于"/"chars,第二个单词是产品名称,因此它可能出现在"one_answers"之间-"字符。

b是一个单词边界,在比您预期的多得多的上下文中匹配。你需要限制上下文,因此你可以使用

^(?=.*(?:/|^)sport(?:/|$))(?=.*(?:[/-]|^)nike(?:[/-]|$)).*

这里,

  • (?=.*(?:/|^)sport(?:/|$))-字符串的开头或紧接在/之后、字符串的末尾或紧接在后面的/字符必须包含sport
  • (?=.*(?:[/-]|^)nike(?:[/-]|$))-字符串的开头或紧接在/-之后、字符串的末尾或紧接在后面的/-字符必须包含nike

请注意,此处不需要$(与字符串末尾匹配(,因为.与换行符以外的任何字符匹配。

最新更新