如何不将regex值硬编码为lodash中的字符串替换?

时间:2016-07-19 10:37:25

标签: lodash

let test = L.replace( '[[Hi, Fred]]', /,|\[|\]/g, '' )
// => Hi fred

如您所见,此代码会删除所有[,和]。 我怎么能传递那些要删除的字符,所以它们不是硬编码的,而是通过函数参数传递的?

1 个答案:

答案 0 :(得分:0)

您可以使用start转义字符,然后使用字符类删除您不想要的字符。

_.escapeRegExp

function removeChars(string, chars) {
  return _.replace(string, new RegExp('[' + _.escapeRegExp(chars) + ']', 'g'), '');
}
function removeChars(string, chars) {
  return _.replace(string, new RegExp('[' + _.escapeRegExp(chars) + ']', 'g'), '');
}

console.log(removeChars('[[Hi, Fred]]', ',[]'));

或使用<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>过滤掉黑名单中包含的字符。

_.reject

function removeChars(string, chars) {
  return _.reject(string, _.partial(_.includes, chars)).join('');
}
function removeChars(string, chars) {
  return _.reject(string, _.partial(_.includes, chars)).join('');
}

console.log(removeChars('[[Hi, Fred]]', ',[]'));