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

Square brackets in String.prototype.search() in Javascript

本文关键字:方括号 search String prototype Javascript      更新时间:2023-09-26

当你在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 .

如果我用''转义括号,它似乎可以正常工作.但是为什么?

如果在 String.prototype.search() 中使用字符串作为参数,则此字符串始终转换为正则表达式。

var result1 = text.search('[the] needle');

与 相同

var result1 = text.search(/[the] needle/);

为了搜索字符串,你必须使用 String.prototype.indexOf():

var result3 = text.indexOf('[haystick]');     // 16