SBU*_*OLD 9 javascript regex jslint
为什么JSLint在以下JavaScript行上返回"Bad escapement"?
param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
Run Code Online (Sandbox Code Playgroud)
从JSLint文档我认为这可以,因为正则表达式文字前面有一个括号:
正则表达式用简洁而神秘的表示法编写.JSLint查找可能导致可移植性问题的问题.它还尝试通过推荐显式擒纵来解决视觉模糊.
JavaScript的正则表达式文字的语法会重载/字符.为避免歧义,JSLint期望正则表达式文字前面的字符是(或=或:或字符).
Guf*_*ffa 13
它不是正在抱怨的正则表达式.您正在转换根本不需要转义的替换字符串中的字符.
[和]字符在普通字符串中没有特殊含义,您不必转义它们:
param = param.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");
Run Code Online (Sandbox Code Playgroud)
注意:正如Anon指出的那样,您不需要为单个字符使用字符集:
param = param.replace(/\[/,"\\[").replace(/\]/,"\\]");
Run Code Online (Sandbox Code Playgroud)
您还可以在单个正则表达式中匹配两个字符,捕获匹配的内容并在替换中使用.如果要替换超过第一次出现的次数,则需要使用全局选项:
param = param.replace(/(\[|\])/g,"\\$1");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6287 次 |
| 最近记录: |