2013-06-07 2 views

ответ

8

/[\[]/ является regular expression literal.

В первой замене вы заменяете [ на \[ и насимметричный во втором.

Это выглядит странно, потому что многие (в основном бесполезные) спуски: [ экранируются в регулярных выражениях и \ и [ спасшиеся в строковом литерале.

Первое регулярное выражение может быть проанализирована следующим образом:

  • /: регулярное открытие
  • [: набор символов открытие
  • \[: [ символ (с побега, что не имеет смысла, поскольку это в комплект)
  • ]: набор символов закрытие
  • / : regex closed

Эти регулярные выражения выглядят слишком многословными: вам не нужен набор символов, если у вас есть только один символ в этом наборе. И вам не нужно скрывать [ в строковом литерале.

Вы могли бы сделать

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

Например

'a [ b c ] d [ e ]'.replace(/\[/, "\\[").replace(/\]/, "\\]") 

дает

"a \[ b c \] d [ e ]" 

Обратите внимание, что, как нет g модификатора, вы делаете только одну замену в каждом позвоните по номеру replace, что, вероятно, не является целью, поэтому вам может понадобиться

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

им жаль, но я должен быть замедлен, я все равно не понимаю. Например, если я правильно ее понимаю, в/[\ []/<- [будет заменен на \ [, но тогда что такое конец:]/for? –

+1

@fishman Я отредактировал для подробностей. Яснее? –

+0

thnxs все, я буду изучать это ближе. –

0

Это - регулярное выражение. Если вы не знакомы с регулярным выражением, вы можете сначала указать study.

0

Это не относится к Javascript, регулярные выражения используются на большинстве языков программирования с небольшими вариациями. Посмотрите на регулярные выражения, очень полезно, как только вы это узнаете!

0

Может быть, вы увидите, как это работает на примере

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

в результате вы будете иметь

\[[[[[\]]]]]]] 

Это регулярное выражение заменить первое вхождение [ в \[ и первое вхождение ] в \]

Смежные вопросы