有没有办法压缩以下正则表达式替换? (javascript)

时间:2019-10-27 22:35:35

标签: javascript node.js regex regexp-replace

我正在尝试从输入字符串的开头和结尾删除空格,用一个空格替换一个以上空格,并删除所有特殊字符。该代码段(随附)有效,但我只是想问一下是否有一种方法可以使它看起来稍微少一点……丑陋?必须有一种更好的方式来编写,对吗?

const filterInput = (vals) => {
  console.log(vals.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ').replace(/[^\w ]/g, ""));
};

filterInput(" squid*^%ward     sponge((bob        ")

1 个答案:

答案 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        ")