Javascript正则表达式检查URL是否包含一个单词而不包含另一个单词

时间:2011-09-01 19:55:48

标签: javascript regex url location href

如果网址包含特定字词,如何检查网址,还检查网页是否包含单词?如果我尝试显示一个例子,它会更好:

如果网址中包含“平底锅”字样,请执行操作,但是当“ panini ”字样在网址中时,请不要执行任何操作:

if (/pan/.test(self.location.href) && (/panini/.test(self.location.href) == null)  {...}

上面的第一部分工作正常,但添加了第二个panini部分当然不会有用,有人有什么想法吗?

5 个答案:

答案 0 :(得分:6)

test返回一个bool,所以只需使用!运算符:

if (/pan/.test(self.location.href) && !(/panini/.test(self.location.href))  {...}

这可以简化为使用indexOf(应该更快):

if (self.location.href.indexOf("pan") > -1 && self.location.href.indexOf("panini") == -1)
{...}

此外,对单词的正则表达式测试可以使用单词边界\b

/\bpan\b/.test(self.location.href)
//Will match "pan", "pan and food", but not "panini"

答案 1 :(得分:0)

JavaScript的indexOf可能会解决您的问题。

var h=location.href;
if (h.indexOf("pan")>-1 && h.indexOf("panini")==-1) // do stuff

答案 2 :(得分:0)

您可以使用indexOf属性,如下所示:

url = window.location.href;
if ((url.indexOf("pan") >= 0) && (url.indexOf("panini") < 0)

答案 3 :(得分:0)

var myurl = self.location.href;
if (myurl.indexOf("pan") != -1) && (myurl.indexOf("panini") == -1)
{
   //do something
}

答案 4 :(得分:0)

您还可以使用负面预测,JS支持所有主流浏览器。

if ((/pan(?!ini)/).test(myurl)) {

/pan(?!ini)/正则表达式匹配任何未跟随“ini”的“pan”。