Что / [\ [] / делает в JavaScript? - PullRequest
10 голосов
/ 02 марта 2010

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

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

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

Ответы [ 4 ]

11 голосов
/ 02 марта 2010

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

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

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

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

name.replace(/([[\]])/g, "\\$1")
10 голосов
/ 02 марта 2010

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

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

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

Я думаю.

3 голосов
/ 02 марта 2010

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

2 голосов
/ 02 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...