将字符串拆分为字符数组,将某些序列保持在一起(JavaScript)

时间:2015-09-15 21:32:55

标签: javascript regex

我有我的字符串:

var str = '123\r\nabc';

我想制作这个数组:

["1", "2", "3", "

", "a", "b", "c"]

所以,我希望按字符拆分,但要将\r\n作为结果数组中的一个元素保存在一起。

我失败的尝试:

console.log(str.split(/\r\n|/)); // removes \r\n
console.log(str.split(/\r\n/)); // splits by \r\n

2 个答案:

答案 0 :(得分:3)

单独拆分无法执行此操作 - /(\r\n)?/例如会在结果中留下undefined - 因此您需要求助match。< / p>

var result = str.match(/\r\n|[\S\s]/g);

其中[\S\s].,但包括换行符。请注意,result在空字符串上为null

答案 1 :(得分:1)

您可以在拆分中使用此正则表达式:

var str = "123\r\nabc";
console.log( str.split(/(\r\n)?/).filter(Boolean) );
  • \r\n周围的捕获组将确保在结果数组中捕获它。
  • filter(Boolean)用于从数组中过滤掉未定义的元素。

<强>输出:

["1", "2", "3", "
↵", "a", "b", "c"]