Javascript 这个正则表达式的作用是什么:/[\[]/?
我很难理解这意味着什么:Javascript 这个正则表达式的作用是什么:/[\[]/?,javascript,regex,Javascript,Regex,我很难理解这意味着什么:/[\[]/为什么有两个replace语句 name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); /[\[]/是一个 在第一个替换中,您将用\[替换[,在第二个替换中替换符号 它看起来很奇怪,因为有很多(大部分是无用的)转义:[在正则表达式中转义,\和[在字符串文本中转义 第一个正则表达式可以这样分析: /:正则表达式打开 [:字符集打开 \[:字符[(带有转义,因为它在集合中是无用的) ]:字符集关
/[\[]/
为什么有两个replace语句
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
/[\[]/
是一个
在第一个替换中,您将用\[
替换[
,在第二个替换中替换符号
它看起来很奇怪,因为有很多(大部分是无用的)转义:[
在正则表达式中转义,\
和[
在字符串文本中转义
第一个正则表达式可以这样分析:
:正则表达式打开/
:字符集打开[
:字符\[
(带有转义,因为它在集合中是无用的)[
:字符集关闭]
:正则表达式关闭/
[
你本可以做到的
name = name.replace(/\[/, "\\[").replace(/\]/, "\\]");
比如说
'a [ b c ] d [ e ]'.replace(/\[/, "\\[").replace(/\]/, "\\]")
给予
请注意,由于没有g
修饰符,因此每次调用replace
,您只需进行一次替换,这可能不是目标,因此您可能需要
name = name.replace(/\[/g, "\\[").replace(/\]/g, "\\]");
这就是使用正则表达式。如果你不熟悉正则表达式,你可能会想先使用它。这并不是Javascript特有的,正则表达式在大多数编程语言中都使用,只是略有不同。了解正则表达式后,你会发现它是非常有用的!也许你会看到它在e例
var name = "[[[[[]]]]]]]";
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
console.log(name);
因此,您将拥有
\[[[[[\]]]]]]]
这个正则表达式将第一次出现的
[
替换为\[
,第一次出现的]
替换为\]很抱歉,我必须慢一点-我仍然不明白。例如,如果我理解正确,在/[[]/中,我很确定在PCRE中,你不必跳出方括号,即/[[]/
可以很好地工作。(这对于/[]]/
来说绝对是正确的,尽管看起来是错误的。)但是是的,/\[/
应该是最清晰的。@acheong87我也这么认为,但我已经建议去掉这个集合,所以我不想再详细说明了。最让我吃惊的是字符串文本中的转义。不是每个人都很熟悉正则表达式,但大多数程序员并没有转义字符串文本中的所有字符…@acheong87我在我的答案中找到了一个位置说到这个事实,[逃跑也没用。@fishman你知道你应该接受答案吗。
\[[[[[\]]]]]]]