我很难理解这意味着什么:/[\[]/
为什么有两个替换语句?
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
最佳答案
/[\[]/
是 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, "\\]");
关于javascript - 这个正则表达式 :/[\[]/? 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16992391/