我很难理解这意味着什么:/[\[]/
为什么有两个替换语句?
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
答案 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);
结果你将有
\[[[[[\]]]]]]]
此正则表达式将第一次出现的[
替换为\[
,将第一次出现]
替换为\]