2016-03-01 2 views
0

Что-то странное, кажется, происходит, когда вы используете квадратные скобки в поисковой фразе с String.prototype.search():Квадратные скобки в String.prototype.search() в Javascript

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

'[настоящий]' класс символов в регулярных выражениях. '' \\ [the \\] "' анализирует его как '/ \ [the \] /', который выходит из квадратных скобок. – Xufox

ответ

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 
Смежные вопросы