Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
/[\[]/在JavaScript中做什么?_Javascript_Regex - Fatal编程技术网

/[\[]/在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")