javascript - 这个正则表达式 :/[\[]/? 是什么意思

标签 javascript regex

我很难理解这意味着什么:/[\[]/ 为什么有两个替换语句?

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/

相关文章:

javascript - 如何让 promise 同步执行?

python - 使用 decode() 与正则表达式对这个字符串进行转义

python - 正则表达式:如何捕获其中包含空格的大数字?

python - 无法在 re.sub() repr 表达式的函数调用中使用 '\1' 反向引用捕获组

javascript - 如何使用 javascript 动态正确地去除 HTML 标签?

java - 正则表达式 - 否定类中的组

javascript - $区域设置服务: get decimal separator (and other locale information)

javascript - 为什么我的函数无意中执行了两次?

javascript - 在 AngularJS 中读取 JSON 响应

javascript - Microsoft Graph 发送邮件但不发送附件(javascript SDK)