Что делает /[\ []/делать в JavaScript?

У меня проблемы с поиском. В некотором коде я вижу

name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

/[\[]/ выглядит как 1 параметр. Что делают символы? Похоже, что он заменяет [] на \[\], но что конкретно делает /[\[]/?

Ответ 1

Синтаксис /…/ - это синтаксис регулярного выражения . И регулярное выражение [\[] описывает класс символов ([…]), который является только символом [). Итак, /[\[]/ - это регулярное выражение, описывающее одиночный [.

Но поскольку глобальный флаг не задан (поэтому заменяется только первое совпадение), все это можно заменить на это (возможно, легче читать):

name.replace("[", "\\[").replace("]","\\]")

Но если все совпадения следует заменить, я бы, вероятно, использовал это:

name.replace(/([[\]])/g, "\\$1")

Ответ 2

Это регулярное выражение, которое соответствует символу левой квадратной скобки.

Это странный способ сделать это; в общем, похоже, что код пытается поставить обратную косую черту перед квадратными скобками в строке, что также можно сделать следующим образом:

var s2 = s1.replace(/\[/g, '\\[').replace(/]/g, '\\]');

Я думаю.

Ответ 3

/[[]/определил диапазон символов, который включает только символ ']' (экранированный), вы правы, который заменен [] на [].

Ответ 4

[] находится в самом регулярном выражении, используемом для обозначения набора совпадающих символов. Если вы хотите представить фактическое [ или ] в регулярном выражении, вам нужно сбежать от него \, следовательно, [\[] и [\]]. Ведущий и конечный / являются лишь частью стандартного синтаксиса JS для обозначения шаблона регулярного выражения.

В конце концов, он заменяет [ на \[, а затем заменяет ] на \].