javascript中的字符串搜索无法找到当前字符串

时间:2012-09-04 23:49:31

标签: javascript string parsing

这有效:

var str ='<input id="a_49519498" type="radio" name="answers[10903336]" value="49519498" />cat,dog       ';

if(str.search('cat,dog')!=-1)
    {
    alert("found ");
    }

虽然这不是:

var str ='<input id="a_49519498" type="radio" name="answers[10903336]" value="49519498" />Rock (Foreigner, Nickelback, etc...)       ';

if(str.search('Rock (Foreigner, Nickelback, etc...)')!=-1)
    {
    alert("found ");
    }

我猜这与

中的括号有关
  

(外国人,Nickelback等......)

为什么JavaScript无法找到此字符串?我怎样才能使它发挥作用?

3 个答案:

答案 0 :(得分:3)

似乎.search [MDN]将参数转换为正则表达式:

  

如果传递了非RegExp对象obj,则使用RegExp将其隐式转换为new RegExp(obj)

然后括号被解释为捕获组而不是字面意思。

您似乎不想使用正则表达式,因此您只需使用.indexOf [MDN]

if(str.indexOf('Rock (Foreigner, Nickelback, etc...)') != -1)

答案 1 :(得分:2)

你需要在你的paranthesis之前添加转义,通常是1个paranthesis,但在这种情况下()创建一个所以我们需要使用\\ 2。

\\(
\\)

str.search('Rock \\(Foreigner, Nickelback, etc...\\)')

jsFiddle Demo

答案 2 :(得分:1)

String.search搜索正则表达式,而不是字符串文字(请参阅https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/search)。只是逃避你的括号:

str.search('Rock \\(Foreigner, Nickelback, etc...\\)'