在String.prototype.search()的搜索词组中使用方括号时,似乎会发生奇怪的事情:
var text = 'the needle in a [haystick]';
var result1 = text.search('[the] needle'); // 2
var result2 = text.search('[the]needle'); // -1
var result3 = text.search('[haystick]'); // 0
var result4 = text.search('\\[haystick\\]'); // 16
var result5 = text.search('['); // SyntaxError: Unterminated character class .
如果我用\\
转义括号,似乎工作正常。但为什么呢?
答案 0 :(得分:1)
如果在String.prototype.search()中使用字符串作为参数,则此字符串始终转换为正则表达式。
var result1 = text.search('[the] needle');
与
相同var result1 = text.search(/[the] needle/);
要搜索字符串,您必须使用String.prototype.indexOf():
var result3 = text.indexOf('[haystick]'); // 16