3 回答
TA贡献1810条经验 获得超5个赞
正则表达式对于这项工作来说太多了。使用内置字符串函数。
var str = `#a
b
#c
d`;
var chunks = str.split("\n\n");
console.log(chunks);
TA贡献1874条经验 获得超12个赞
如果唯一的目标是在以#您开头的行分割成部分,则可以使用
test.split(/^(?=#)/m)
见JS演示:
var test="#a\nb\n\n#c\nd";
console.log(test.split(/^(?=#)/m))
将.*?在模式的结尾永远不匹配任何字符,因为它是跳过模式的结束信号匹配查找完成。
用
s.match(/#.*(?:\r?\n(?!\r?\n).*)*/g)
查看正则表达式演示
细节
#- 一个#字符.*- 除换行符以外的任何 0+ 个字符(?:\r?\n(?!\r?\n).*)*- 0 次或多次重复\r?\n(?!\r?\n)- 一个可选的 CR 然后是 LF,后面没有一个可选的 CR 然后是 LF.*- 除换行符以外的任何 0+ 个字符
或者,使用splitwith/(?:\r?\n){2,}/匹配 2 个或更多换行符序列。
JS演示:
var test="#a\nb\n\n#c\nd";
console.log(test.match(/#.*(?:\r?\n(?!\r?\n).*)*/g));
console.log(test.split(/(?:\r?\n){2,}/));
添加回答
举报
