JavaScript使用正则split分割字符串如何去掉空元素得到目标数组
JavaScript split配合正则分割出现空元素的解决方法
问题原因
当split方法的参数是带有捕获组的正则时,返回结果会同时包含分割后的片段和捕获到的分隔符内容,字符串首尾与匹配项的间隙、多个匹配项之间的间隙没有有效内容时,就会生成空字符串,这就是你得到的数组存在空元素的原因。
最优解决方案
直接使用match()方法匹配你需要的双大写字母片段,逻辑更直观:
function pntSq(m){ // 匹配所有连续两个大写字母的片段,匹配不到时返回空数组避免报错 let a = m.match(/[A-Z]{2}/gi) || [] console.log(a) } pntSq("YYRR") // 输出: ['YY', 'RR']
兼容split写法的解决方案
如果你需要保留split的写法,在分割后加过滤逻辑去除假值即可:
function pntSq(m){ let a = m.split(/([A-Z][A-Z])/gi).filter(Boolean) console.log(a) } pntSq("YYRR") // 输出: ['YY', 'RR']
filter(Boolean)会自动过滤数组中的空字符串、null、undefined等假值,刚好可以清除多余的空元素。
内容的提问来源于stack exchange,提问作者Ayman- s.s
相关产品推荐
相关产品推荐

