如何使用JS正则表达式匹配提取字符串中所有不重复的字符
JS提取字符串中仅首次出现字符的实现方案
可以通过正则表达式实现该需求,核心逻辑是匹配所有后续会重复出现的字符,直接删除即可保留所有字符的首次出现结果。
正则实现代码
function getUniqueFirst(str) { // 匹配所有后续还会出现的重复字符,替换为空 return str.replace(/(.)(?=.*\1)/g, ''); } // 测试用例 console.log(getUniqueFirst("abczacg")); // 输出:abczg console.log(getUniqueFirst("aabbccdd")); // 输出:abcd console.log(getUniqueFirst("hello world")); // 输出:helo wrd
正则规则说明
(.):捕获组,匹配任意单个字符(?=.*\1):正向肯定预查,校验当前捕获的字符在后方字符串中是否还会出现g:全局匹配标识符,遍历替换所有符合条件的字符
可读性更高的非正则实现
如果对正则可读性有要求,也可以用Set实现,逻辑更直观:
function getUniqueFirst(str) { const charSet = new Set(); return str.split('').filter(char => { if(!charSet.has(char)) { charSet.add(char); return true; } return false; }).join(''); }
内容的提问来源于stack exchange,提问作者Pavel
相关产品推荐
相关产品推荐

