在正则表达式结尾处不是特定单词

时间:2013-08-23 16:27:07

标签: javascript regex .htaccess

我有这些字符串:

"/page/test/myimg.jpg"
"/page/test/"
"/page2/test/"
"/page/test/other"

对于以/ page / test开头的所有字符串,我希望为true,除非它以.jpg结尾。

然后我做了:/^\/page\/test(.*)(?!jpg)$/。 好吧,它不起作用。 :\

它应该像这样返回:

"/page/test/myimg.jpg" // false
"/page/test/" // true
"/page2/test/" // false
"/page/test/other" // true

2 个答案:

答案 0 :(得分:4)

使用JavaScript轻松完成:

/^(?!.*\.jpg$)\/page\/test/

答案 1 :(得分:2)

在锚定结束时使用负面外观:

/^\/page\/test(.*)(?<!\.jpg)$/

为清楚起见,此正则表达式将匹配* .jpg中未结束的任何输入:

^.*(?<!\.jpg)$

编辑(现在也必须在JavaScript中工作)

JavaScript不支持外观,因此必须使用这个丑陋的选项,其中说明最后4个字符中至少有一个必须不是.jpg

^.*([^.]...|.[^j]..|..[^p].|...[^g])$