Javascript中String.prototype.search()中的方括号

时间:2016-03-01 15:30:23

标签: javascript regex escaping

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 .

如果我用\\转义括号,似乎工作正常。但为什么呢?

1 个答案:

答案 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
相关问题