JavaScript中的/ [\ [] /做什么?

时间:2010-03-02 17:13:27

标签: javascript regex

我在谷歌搜索时遇到了麻烦。在某些代码中,我看到了

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

/[\[]/看起来是1个参数。这些符号有什么作用?看起来它正在用\[\]替换[]但/[\[]/具体做什么?

4 个答案:

答案 0 :(得分:11)

语法/…/literal regular expression syntax。正则表达式[\[]描述了一个字符类([…]),它只是[所属的字符。因此,/[\[]/是一个描述单个[的正则表达式。

但由于没有设置全局标志(所以只会替换第一个匹配),整个事情可以用这个替换(可能更容易阅读):

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

但如果所有比赛都应该被替换,我可能会使用这个:

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

答案 1 :(得分:10)

这是一个与左方括号字符匹配的正则表达式。

这是一种奇怪的方式;整体看起来代码试图在字符串中的方括号之前放入反斜杠,你也可以这样做:

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

我想。

答案 2 :(得分:3)

/ [[] /定义了一个只包含']'字符(转义)的字符范围,你是正确的,用[]替换[]。

答案 3 :(得分:2)

[]在正则表达式中用于表示要匹配的字符集合。如果您想表示正则表达式中的实际[],则需要\转义[\[][\]]。前导和尾随/只是标准JS语法的一部分,用于表示正则表达式模式。

毕竟,它会将[替换为\[,然后将]替换为\]