这个正则表达式是什么:/ [\ [] /?

时间:2013-06-07 20:25:34

标签: javascript regex

我很难理解这意味着什么:/[\[]/为什么有两个替换语句?

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

4 个答案:

答案 0 :(得分:8)

/[\[]/regular expression literal

在第一次替换中,您要将[替换为\[,将对称替换为第二次。

由于许多(大多数无用的)擒纵机构,它看起来很奇怪:[在正则表达式中被转义,\[在字符串文字中被转义。

可以像这样分析第一个正则表达式:

  • /:正则表达式开放
  • [:字符集开放
  • \[[字符(有一个无效的转义,因为它在一个集合中)
  • ]:字符集关闭
  • /:正则表达式关闭

这些正则表达式对我来说过于冗长:如果你在该集合中只有一个字符,则不需要字符集。而且您不需要转义字符串文字中的[

你可以做到

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

例如

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

给出

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

请注意,由于没有g修饰符,因此您在每次调用replace时只会进行一次替换,这可能不是目标,因此您可能需要

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

答案 1 :(得分:0)

那是使用正则表达式。如果您不熟悉正则表达式,可能需要先study

答案 2 :(得分:0)

这对Javascript来说并不是特定的,正则表达式在大多数编程语言中使用时略有不同。查看正则表达式,一旦你知道它就非常有用!

答案 3 :(得分:0)

也许你会看到它在例子中如何运作

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

结果你将有

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

此正则表达式将第一次出现的[替换为\[,将第一次出现]替换为\]