javascript – 为什么JSLint在这行代码上返回“不好的擒纵”?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么JSLint在这行代码上返回“不好的擒纵”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么JSLint在以下 JavaScript行上返回“错误的擒纵”?
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");
原文链接:https://www.f2er.com/js/151316.html

猜你在找的JavaScript相关文章