正则表达式匹配字符串的一部分不包含字符

时间:2014-08-06 14:46:48

标签: regex

我需要一个我想要与几个不同字符串匹配的正则表达式。

正则表达式应检索此字符串的匹配项:

http://www.domain.com/category

但不是为了这个:

http://www.domain.com/category/sports 

http://www.domain.com/category/sportsmanship

我尝试了以下正则表达式,但它并不真正想要工作:

/categ.*?^((?!sports).)*$/g

3 个答案:

答案 0 :(得分:2)

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

.*/category(?!/sports).*

<强> Working demo

enter image description here

答案 1 :(得分:1)

你可以写

/\/categ[^\/]*(?:\/(?!sports)[^\/]*)*$/

在这种模式中,如果字符串“sports”没有跟随,则每个斜线后负向前瞻检查。

注意:如果您必须经常处理包含字符串“sports”的长路径,您可以尝试使用此变体来加速模式:

/\/categ(?=([^\/]*))\1(?:\/(?!sports)(?=([^\/]*))\2)*$/

答案 2 :(得分:0)

我认为您不希望最后匹配包含字符串sports的行。如果是,那么你可以试试下面的正则表达式,

^.*?categ(?:(?!sports).)*$

正则表达式的问题是.*?^^断言我们处在一条线的起点。