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

string search in javascript not able to find the present string

本文关键字:字符串 搜索 javascript      更新时间:2023-09-26

这很有效:

var str ='<input id="a_49519498" type="radio" name="answerswers[10903336]" value="49519498" />cat,dog       ';
if(str.search('cat,dog')!=-1)
    {
    alert("found ");
    }

而这不是:

var str ='<input id="a_49519498" type="radio" name="answerswers[10903336]" value="49519498" />Rock (Foreigner, Nickelback, etc...)       ';
if(str.search('Rock (Foreigner, Nickelback, etc...)')!=-1)
    {
    alert("found ");
    }

​我猜这与中的括号有关

(外国人、尼克贝克等)

为什么JavaScript找不到此字符串?我怎样才能让它工作?

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

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

然后括号被解释为捕获组,而不是字面意义上的。

你似乎不想使用正则表达式,所以你可以只使用.indexOf[MDN]

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

您需要在Paradishesion之前添加转义,通常是1个Paradishesis,但在这种情况下,()创建了一个,因此我们需要使用''两个。

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

jsFiddle演示

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

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