简单的 javascript search() 函数不起作用

don*_*yor 2 html javascript split

我试图在另一个字符串中找到一些字符串部分。我找到了一个调用的函数search()并尝试了这个:

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

但它给了我no http即使它有http://一部分。这是小提琴:http : //jsfiddle.net/xXTuY/2/

你能帮帮我吗?

Joh*_*rak 7

首先,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');   
}
Run Code Online (Sandbox Code Playgroud)