我很难理解这意味着什么:/[\[]/
为什么有两个替换语句?
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
我很难理解这意味着什么:/[\[]/
为什么有两个替换语句?
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
/[\[]/
是正则表达式文字。
在第一个替换中,您将在第二个替换中替换 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, "\\]");
也许您会在示例中看到它是如何工作的
var name = "[[[[[]]]]]]]";
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
console.log(name);
结果你会有
\[[[[[\]]]]]]]
此正则表达式替换第一次出现的[
to\[
和第一次出现的]
to\]
那就是使用正则表达式。如果你不熟悉正则表达式,你可能想先学习一下。
这实际上并不特定于 Javascript,大多数编程语言都使用正则表达式,但略有不同。研究正则表达式,一旦你知道它就非常有用!