我有以下功能。这样做是过滤子域中允许的字符。在JSLint中,我遇到了以下错误。如果没有JSLint显示错误,我有什么方法可以做到这一点。我知道我可以忽略JSLint设置中的错误但是有没有其他方法可以改进我的代码以不显示JSLint错误。
function filterSubDomain(value) {
return value.replace(/[^a-z0-9\-]/ig, '')
.replace(/^[\-]*/, '')
.replace(/[\-]*$/, '')
.toLowerCase();
}
答案 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正则表达式中没有!