javascript - 为什么 JSLint 在这行代码中返回 'bad escapement'?

标签 javascript regex jslint

为什么 JSLint 在以下 JavaScript 行中返回“Bad escapement”?

param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

根据 JSLint 文档,我认为这没问题,因为正则表达式文字前面有一个括号:

Regular expressions are written in a terse and cryptic notation. JSLint looks for problems that may cause portability problems. It also attempts to resolve visual ambiguities by recommending explicit escapement.

JavaScript's syntax for regular expression literals overloads the / character. To avoid ambiguity, JSLint expects that the character preceding a regular expression literal is a ( or = or : or , character.

最佳答案

它提示的不是正则表达式。您正在转义替换字符串中根本不需要转义的字符。

[ 和 ] 字符在普通字符串中没有特殊含义,您不必对它们进行转义:

param = param.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");

注意:正如 Anon 指出的,您不需要为单个字符使用字符集:

param = param.replace(/\[/,"\\[").replace(/\]/,"\\]");

您还可以在单​​个正则表达式中匹配两个字符,捕获匹配的内容并在替换中使用。如果你想替换不止第一次出现,你想使用全局选项:

param = param.replace(/(\[|\])/g,"\\$1");

关于javascript - 为什么 JSLint 在这行代码中返回 'bad escapement'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338547/

相关文章:

javascript - 在 href lnks 中使用 javascript void(0) 的替代方法是什么? (对于 Backbone 和 SPA 站点)

javascript - 在 JavaScript 中编写一个正则表达式来匹配 $ 变量前缀语法(就像在 Bash 脚本中找到的那样)

javascript - JSLint : 'numeral' was used before defined?

javascript - 让 Facebook 的 react.js 库 JSX 语法与 jslint 很好地配合?

javascript - JSLint 错误 : Unexpected 'this'

javascript - 每个循环检查图像 src 是否包含字符串

javascript - 分数不递增javascript

javascript - 根据 div 在父级中的位置滚动父级 div 溢出

php - 如何删除字符串中最后一次出现的下划线

java - 用于匹配交替序列的正则表达式