我试图让我的Javascript代码100%JSLint干净.
我有一个正则表达式:
linkRgx = /https?:\/\/[^\s;|\\*'"!,()<>]+/g;
Run Code Online (Sandbox Code Playgroud)
JSLint报道:
Insecure '^'
Run Code Online (Sandbox Code Playgroud)
是什么使得对字符集的否定使用"不安全"?
[^\s;|\\*'"!,()<>]
匹配除列出的ASCII字符以外的任何ASCII字符,以及任何非ASCII字符.由于JavaScript字符串是Unicode感知的,这意味着Unicode已知的每个字符.我可以看到很多可能的恶作剧.
而不是禁用警告,我会改写字符类来匹配你的人物就希望允许,从这个表达式正则表达式食谱做:
/\bhttps?:\/\/[-\w+&@#/%?=~|$!:,.;]*[\w+&@#/%=~|$]/g
Run Code Online (Sandbox Code Playgroud)
(回答我自己的问题)我做了一些挖掘... JSLint文档说:
禁止不安全.和[^ ...].in/RegExp/regexp:如果是,则为true.在RegExp文字中不应该允许[^ ...].在安全应用程序中进行验证时,不应使用这些表单.
我所做的是禁用有问题的行的JSLint错误(因为我没有处理需要保护的潜在恶意用户输入:
/*jslint regexp: false*/
.... Javascript statement(s) ....
/*jslint regexp: true*/
Run Code Online (Sandbox Code Playgroud)