3

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

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

4 回答 4

8

/[\[]/正则表达式文字

在第一个替换中,您将在第二个替换中替换 a [by\[和 symetric。

它看起来很奇怪,因为有许多(大部分是无用的)[转义:在正则表达式中被转义,\并且[在字符串文字中被转义。

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

  • /: 正则表达式打开
  • [: 字符集打开
  • \[:[角色(转义是无用的,因为它在集合中)
  • ]: 字符集关闭
  • /: 正则表达式关闭

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

你本来可以做的

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

例如

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

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

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

 name = name.replace(/\[/g, "\\[").replace(/\]/g, "\\]");
于 2013-06-07T20:27:17.967 回答
0

也许您会在示例中看到它是如何工作的

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

结果你会有

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

此正则表达式替换第一次出现的[to\[和第一次出现的]to\]

于 2013-06-07T20:39:09.080 回答
0

那就是使用正则表达式。如果你不熟悉正则表达式,你可能想先学习一下。

于 2013-06-07T20:27:23.970 回答
0

这实际上并不特定于 Javascript,大多数编程语言都使用正则表达式,但略有不同。研究正则表达式,一旦你知道它就非常有用!

于 2013-06-07T20:29:28.303 回答