2013-04-28 35 views
1

我想在另一個字符串中找到一些字符串部分。而且我發現了一個名爲search()功能,並試圖此:簡單的javascript搜索()函數不起作用

if("http://www.google.de".search("http://") > 0){ 
    alert('with http');  
} else { 
    alert('no http'); 
} 

,但它給我no http即使它有它http://部分。這裏是小提琴: http://jsfiddle.net/xXTuY/2/

你能幫我嗎?

+1

試圖扭轉條件 – 2013-04-28 06:03:06

+1

'search'預計正則表達式,而不是我已經恢復了'〜'回字面匹配 – 2013-04-28 06:05:49

+0

'> -1'在我的答案。那是你爲什麼不接受的原因嗎? – 2013-04-28 06:20:02

回答

4

首先,String#search需要一個正則表達式,而不是一個字符串。如果遇到非正則表達式,它會嘗試通過new RegExp(patt)將其轉換爲正則表達式。在字符串的情況下,它將字符串視爲正則表達式模式。這意味着如果搜索字符串包含的字符在正則表達式中具有特殊含義,那麼您的搜索將表現出意外行爲(如果搜索字符串包含的字符在正則表達式中含有特殊含義,則會出現意外行爲(匹配比想要的更多,匹配比期望更少,甚至會拋出語法錯誤,改爲使用indexOf

二,searchindexOf返回第一個匹配的位置,如果沒有找到匹配,則返回-1。這意味着如果返回值小於零,則什麼也找不到。如果返回值爲零,則在字符串的開始處進行匹配。

還要注意有用於x != -1一個方便的快捷鍵:按位否定~x

if("http://www.google.de".indexOf("http://") > -1){ 
    alert('with http');  
} else { 
    alert('no http'); 
} 
1

"http://www.google.de".search("http://")返回0. 0不小於0,因此您的條件評估爲false。

+0

哦耶。對不起,那是我的錯誤。謝謝 – doniyor 2013-04-28 06:07:04