2011-09-01 314 views
1

如何检查一个URL是否包含特定单词,还检查它是否不包含单词?它的更好,如果我尝试并显示一个例子:Javascript正则表达式检查URL是否包含一个单词并且不包含另一个单词

做的东西,如果这个词“”是在URL中,但是没有做任何事情,当这个词“帕尼尼”是在URL:

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

以上第一部分工作正常,但与第二个帕尼尼部分添加它当然不会工作,任何人有任何想法?

+3

现在感谢我饿了*寻找帕尼尼* – Loktar

+0

我不明白你引用的代码不会做你所描述的。请举一个例子,说明它做了什么不同于你想要的。 –

+0

因为它返回false,而不是null – CashIsClay

回答

6

test返回一个布尔值,因此就使用!操作:

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" 
+0

Dang,你的抽奖更快! :) –

+0

谢谢,它给我一个语法错误,虽然。 – ToddN

+0

@ToddN你可以再试一次吗?我错过了''''。 –

0

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

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

可以按如下方式使用indexOf属性:

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

您也可以使用负前瞻,其中JS在所有主要浏览器支持。

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

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

相关问题