如何修复JSLint不安全^错误?

时间:2015-01-23 12:57:34

标签: jslint

我有以下功能。这样做是过滤子域中允许的字符。在JSLint中,我遇到了以下错误。如果没有JSLint显示错误,我有什么方法可以做到这一点。我知道我可以忽略JSLint设置中的错误但是有没有其他方法可以改进我的代码以不显示JSLint错误。 JSLint Error

function filterSubDomain(value) {
  return value.replace(/[^a-z0-9\-]/ig, '')
    .replace(/^[\-]*/, '')
    .replace(/[\-]*$/, '')
    .toLowerCase();
}

1 个答案:

答案 0 :(得分:0)

我认为这很容易 - 只需快速重新阅读。我会快速重复上面的评论: JSLint希望你说出你想做什么而不是你 ,因为说你不想要的东西总是留下你想要潜入的超集的空间。也就是说,JSLint的目的是强迫你明确/精确地编码。

因此,您需要在replace使用match而不是/*jslint sloppy:true, white:true, devel:true */ function filterSubDomain(value) { var out = value, re = /[a-z0-9\-]+/gi, found; found = value.match(re); out = found.join(""); // There are better ways to `trim('-')`. while (0 === out.indexOf("-")) { out = out.substr(1); } while (out.length === out.lastIndexOf("-")+1) { out = out.slice(0,out.length-1); } return out; } console.log(filterSubDomain('---For more inform--ation, - see Chapter 3.4.5.1---')); // Formoreinform--ation-seeChapter3451 。我相信这是一种方式(从MDN's match code偷一点):

{{1}}

There are other ways to trim,但你明白了。使用JSLint的JavaScript正则表达式中没有!