我在谷歌搜索时遇到了麻烦。在某些代码中,我看到了
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
/[\[]/
看起来是1个参数。这些符号有什么作用?看起来它正在用\[\]
替换[]但/[\[]/
具体做什么?
答案 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语法的一部分,用于表示正则表达式模式。
毕竟,它会将[
替换为\[
,然后将]
替换为\]
。