使用jQuery正则处理关键词字符串:移除逗号旁空格并修正代码问题
关键词格式化代码修正
问题说明
需要实现的效果:获取客户端输入的关键词,移除逗号两侧的所有空格,同时保留关键词内部的空格(比如air duster这类带空格的词)。
- 原始输入:
,air duster, apple, samsung , power bank station,sony
- 期望输出:
air duster,apple,samsung,power bank station,sony
- 现有代码的问题:
原代码用split(/[ ,]+/).join(','),会把空格和逗号都作为分隔符,直接拆分了带空格的关键词,导致实际输出变成:
,air,duster,apple,samsung,power,bank,station,sony
修正后的代码
$("#my-input").on("focusout", function() { console.log("FOCUS OUT") let inputVal = $(this).val(); // 替换逗号前后任意数量的空格为单个无空格逗号 let formattedVal = inputVal.replace(/\s*,\s*/g, ',') // 移除首尾空白字符(包括开头多余的逗号) .trim() // 处理可能出现的连续逗号 .replace(/,+/g, ','); $(this).val(formattedVal); })
代码说明
replace(/\s*,\s*/g, ','):精准匹配逗号前后的任意空白字符(包括0个),替换为单个无空格的逗号——既清理了逗号两侧的冗余空格,又保留了关键词内部的空格。.trim():移除字符串首尾的所有空白字符,解决原始输入开头的空格+逗号问题。replace(/,+/g, ','):处理输入中可能存在的连续逗号(比如多个逗号连写的情况),确保最终只有单个逗号分隔关键词。- 改用
.val(formattedVal)设置输入框值,比.attr("value", ...)更可靠,能同步更新输入框的实际内容。
内容的提问来源于stack exchange,提问作者Melisa
相关产品推荐
相关产品推荐

