regex 从简化函数中排除元素数组

kuuvgm7e  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(201)

我有这个函数来删除除字符以外的所有内容:

function simplify(string) {
    return string.toLowerCase().replace(/[^A-Za-z0-9'_]+/g, " ").trim();
}

现在我想排除一个元素数组,以便它们在字符串中保持完整。
数组为:

["’", "-"]

现在该函数删除了这两个元素:

function simplify(string) {
    return string.toLowerCase().replace(/[^A-Za-z0-9'_]+/g, " ").trim();
}

console.log(simplify("father’s deep-day"));

预期的结果是:
“父亲的深日”

mf98qq94

mf98qq941#

一种方法是在正则表达式中添加这些字符。

function simplify(string) {
    return string.toLowerCase().replace(/[^A-Za-z0-9'_’-]+/g, " ").trim();
}

console.log(simplify("father’s deep-day"));

如果你想,有时,传递额外的字符,你可以把它们作为参数传递给simplify函数,然后动态地创建正则表达式。

function simplify(string, safeChars = []) {
  const defaultChars = ['A-Z', 'a-z', '0-9', '\'', '_'];
  const allAllowedChars = defaultChars.concat(safeChars).join('');
  const regularExpression = new RegExp(`[^${allAllowedChars}]`, 'g');
  return string.toLowerCase().replace(regularExpression, " ").trim();
}

console.log(simplify("father’s deep-day", ["’", "-"]));

相关问题