JS字符串处理问题:特殊字符移除与空格转下划线异常排查
解决字符串处理问题:移除特殊字符并替换空格为下划线,避免末尾多余下划线
你的代码问题出在正则/([^\w]+)/g上——它会把所有非单词字符(包括括号、空格)都替换成下划线,而原字符串末尾的)属于非单词字符,所以被替换后就多了一个下划线,导致输出mech_electronic_。
这里提供两种简单的修复方式:
方法一:两步替换(推荐,逻辑清晰)
先把所有连续的非单词字符替换成下划线,再移除首尾的下划线:
let updateStreamSelectedCourse = 'mech (electronics)'.replace(/[^\w]+/g, '_').replace(/^_+|_+$/g, ''); console.log(updateStreamSelectedCourse); // 输出:mech_electronics
- 第一个
replace:用[^\w]+匹配所有连续的非单词字符(空格、括号等),统一替换成单个下划线 - 第二个
replace:用^_+匹配开头的下划线,_+$匹配结尾的下划线,把这些多余的下划线替换为空
方法二:调整正则一步完成
先移除首尾的非单词字符,再把中间的非单词字符替换成下划线:
let updateStreamSelectedCourse = 'mech (electronics)'.replace(/(?:^\W+|\W+$)/g, '').replace(/\W+/g, '_'); console.log(updateStreamSelectedCourse); // 输出:mech_electronics
内容的提问来源于stack exchange,提问作者Nikhil Masurkar
相关产品推荐
相关产品推荐

