我正在尝试从输入字符串的开头和结尾删除空格,用一个空格替换一个以上空格,并删除所有特殊字符。该代码段(随附)有效,但我只是想问一下是否有一种方法可以使它看起来稍微少一点……丑陋?必须有一种更好的方式来编写,对吗?
const filterInput = (vals) => {
console.log(vals.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ').replace(/[^\w ]/g, ""));
};
filterInput(" squid*^%ward sponge((bob ")
答案 0 :(得分:3)
trim()
首先是字符串,而不是使用第一个.replace
:
const filterInput = (vals) => {
const result = vals
.trim()
.replace(/\s+/g, ' ')
.replace(/[^\w ]/g, '');
console.log(result);
};
filterInput(" squid*^%ward sponge((bob ")
您可以将其简化为单个正则表达式,但这与IMO的可读性不同:
const filterInput = (vals) => {
const result = vals
.trim()
.replace(/\s+|\W/g, s => s[0] === ' ' ? ' ' : '');
console.log(result);
};
filterInput(" squid*^%ward sponge((bob ")