如何修改JavaScript的simplify函数以保留指定特殊字符
保留指定特殊字符的JavaScript字符串简化函数修改
我有一个用于移除指定字符以外所有内容的JavaScript函数,原代码如下:
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"));
得到的输出是"father s deep day",但期望输出为"father’s deep-day"。
修改方案
只需将需要保留的字符加入正则表达式的允许字符集合中。注意-在正则字符集里用于表示范围,所以需要转义(\-)避免歧义,直接添加到否定字符集[^...]内即可:
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")); // 输出:"father’s deep-day"
此时’和-会被完整保留,符合预期需求。
内容的提问来源于stack exchange,提问作者user21189833
相关产品推荐
相关产品推荐

