这有效:
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无法找到此字符串?我怎样才能使它发挥作用?
答案 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...\\)')
答案 2 :(得分:1)
String.search
搜索正则表达式,而不是字符串文字(请参阅https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/search)。只是逃避你的括号:
str.search('Rock \\(Foreigner, Nickelback, etc...\\)'