3 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
正則表達(dá)式對(duì)于這項(xiàng)工作來(lái)說(shuō)太多了。使用內(nèi)置字符串函數(shù)。
var str = `#a
b
#c
d`;
var chunks = str.split("\n\n");
console.log(chunks);

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
如果唯一的目標(biāo)是在以#您開(kāi)頭的行分割成部分,則可以使用
test.split(/^(?=#)/m)
見(jiàn)JS演示:
var test="#a\nb\n\n#c\nd";
console.log(test.split(/^(?=#)/m))
將.*?在模式的結(jié)尾永遠(yuǎn)不匹配任何字符,因?yàn)樗翘^(guò)模式的結(jié)束信號(hào)匹配查找完成。
用
s.match(/#.*(?:\r?\n(?!\r?\n).*)*/g)
細(xì)節(jié)
#
- 一個(gè)#
字符.*
- 除換行符以外的任何 0+ 個(gè)字符(?:\r?\n(?!\r?\n).*)*
- 0 次或多次重復(fù)\r?\n(?!\r?\n)
- 一個(gè)可選的 CR 然后是 LF,后面沒(méi)有一個(gè)可選的 CR 然后是 LF.*
- 除換行符以外的任何 0+ 個(gè)字符
或者,使用split
with/(?:\r?\n){2,}/
匹配 2 個(gè)或更多換行符序列。
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,}/));
添加回答
舉報(bào)