如何使用正则仅按逗号拆分字符串,无逗号时不拆分保留原有空格
解决方法
核心思路是仅将逗号作为拆分的判定依据,空格本身不触发拆分规则,对应的正则为 /,\\s*/,匹配逗号以及逗号后跟随的任意数量空白字符。
测试示例
- 带逗号的场景:
let cssValue = '20px, 40px' cssValue.split(/,\s*/) // 返回 ['20px', '40px']
- 无逗号仅含空格的场景:
let cssValue = '20px 40px' cssValue.split(/,\s*/) // 返回 ['20px 40px']
原正则问题说明
你之前使用的 [^a-zA-Z0-9]+ 会匹配所有连续的非字母数字字符,空格同样属于该规则的匹配范围,因此无论字符串是否包含逗号,只要出现空格就会触发拆分,不符合需求。
可选优化
如果需要兼容逗号前后都存在空格的场景(例如 '20px , 40px'),可以将正则调整为 /\\s*,\\s*/,拆分后各元素首尾不会残留多余空格,返回结果依旧为 ['20px', '40px']。
内容的提问来源于stack exchange,提问作者Denys Rybkin
相关产品推荐
相关产品推荐

