2011-09-01 240 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」。

相關問題