作者:小苗的秘密 | 来源:互联网 | 2023-10-14 11:28
最近在用js解析markdown
headline的正则如何写?
多个
,最后一个要作为标题,比如
,那么第一个
作为
来解释,第二个
作为标题来解释,最后解析得到:
。
一般情况是
,井号和标题之间会有若干个空格。但标题自身里面的空格则要显示出来。
1 2 3 4 5 6
| var headline = /^(\#{1,6})([^\#\n]+)$/m
var str = "## a##"
while ((stra = headline.exec(str)) !== null) {
count = stra[1].length;
str = str.replace(stra[0], '' + stra[2].trim() + '').trim();
} |
比如:
1 2 3 4 5 6 7
| var headline = /^(\#{1,6})(.*?)$/g
var str = "##a##"
while ((stra = headline.exec(str)) !== null) {
console.log(stra)
count = stra[1].length;
str = str.replace(stra[0], '' + stra[2].trim() + '').trim();
} |
能解决以#结尾的问题,但不能解决全是#的情况
使用typora的时候我发现,typora并不能解析以#结尾的标题,但可以解决全是#的情况,最后一个#号会当做标题。
其实最好的写法应该是多个#号之后写个空格,然后写标题,而标题的内容应该可以是任意的(无论是否包含#号,或是以#号结尾),所以
1
| var headline = /^(\#{1,6})(.*?)$/g |
应该是理想的答案,可以处理
的问题就行了。