JavaScript如何拆分字符串并保留标点符号?
实现保留标点的字符串拆分方案
当然可以实现,推荐两种简单的正则方案:
方案一:带捕获组的split + 过滤空值
使用split结合包含捕获组的正则表达式,捕获组会把分割时的标点符号保留到结果数组中,最后过滤掉拆分产生的空字符串即可:
var str = "(someword,bbb)"; var arr = str.split(/(\W)/).filter(item => item !== ''); // 输出:["(", "someword", ",", "bbb", ")"]
这里\W匹配所有非单词字符(即标点、括号这类符号),括号()将其设为捕获组,split时会把该组内容也加入结果数组;filter用来清除拆分开头/结尾可能出现的空字符串。
方案二:直接match匹配目标元素
更简洁的方式是用match全局匹配所有目标元素,正则规则为“连续字母数字”或“单个非单词字符”:
var str = "(someword,bbb)"; var arr = str.match(/\w+|\W/g); // 输出:["(", "someword", ",", "bbb", ")"]
\w+匹配连续的字母数字组合,\W匹配单个非单词字符,g标志开启全局匹配,直接得到完整的目标数组,无需额外过滤。
如果遇到多个连续标点(比如"(someword,,bbb)"),两种方案都会自动将每个标点拆分为单独元素,完全符合需求。
内容的提问来源于stack exchange,提问作者Andre Retro Pie
相关产品推荐
相关产品推荐

