/[\[]/在JavaScript中做什么?
我在谷歌上搜索这个有困难。在一些代码中我看到了/[\[]/在JavaScript中做什么?,javascript,regex,Javascript,Regex,我在谷歌上搜索这个有困难。在一些代码中我看到了 name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); /[\[\]/看起来是一个参数。这些符号是做什么的?它看起来像是用\[\]替换[],但是/[\[\]/具体做什么呢?它是一个匹配左方括号字符的正则表达式 这是一种奇怪的方法;总的来说,代码似乎试图将反斜杠放在字符串的方括号之前,您也可以这样做: var s2 = s1.replace(/\[/g, '\\[').replace(/
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
/[\[\]/
看起来是一个参数。这些符号是做什么的?它看起来像是用\[\]
替换[],但是/[\[\]/
具体做什么呢?它是一个匹配左方括号字符的正则表达式
这是一种奇怪的方法;总的来说,代码似乎试图将反斜杠放在字符串的方括号之前,您也可以这样做:
var s2 = s1.replace(/\[/g, '\\[').replace(/]/g, '\\]');
我认为。/[[]/定义了一个字符范围,其中只包括“]”字符(转义),将[]替换为[]是正确的。正则表达式本身中的
[]
用于表示要匹配的字符的集合。如果要表示实际的[
或]
在regex中,则需要通过\
对其进行转义,因此出现了[\[\]
和[\]
。前导和尾随/
只是表示regex模式的标准JS语法的一部分
毕竟,它用
\[
替换[
,然后用\]
替换
,语法是/…/
,正则表达式描述了一个字符类([…]
),它是[
唯一的字符。所以/[\[]/
是一个正则表达式,用于描述单个[
但是,由于没有设置全局标志(因此只有第一个匹配项将被替换),因此可以用以下内容替换整个内容(可能更容易阅读):
但如果所有匹配项都被替换,我可能会使用以下方法:
name.replace(/([[\]])/g, "\\$1")
hrm…将[and]替换为转义版本我猜,[]内的[a]不是元字符。[[]是只匹配的有效字符类。[真正的问题是为什么他们使用字符类来匹配单个
[
@friedo我想他们不知道[…]
是什么字符类
name.replace(/([[\]])/g, "\\$1")