如何通过javascript正则表达式匹配降价列表文本块?

时间:2017-10-07 11:21:24

标签: javascript regex markdown

Hey Stack Overflow成员, 我正在尝试解析此文本并获得两个单独的匹配,无序的markdown列表块。问题是我无法找到匹配它们的方法。 可能还有文字。

我正在使用 JavaScript风格的正则表达式

这就是我一直在尝试的,完整示例Regex101

(\*|\t\*|\s+\*).*

列表:

* Item 1
* Item 2
    * Item 2a
    * Item 2b

* Item 1
* Item 2
    * Item 2a
    * Item 2b

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

[\s\S]会使JavaScript成为多线,因为点.不会做多线。

[\s\S]将搜索包含换行符的每个空格和非空白字符。



var match = document.querySelector("pre").textContent.match(/(\*|\t\*|\s+\*)[\s\S]*?\n\n/g);

console.log(match);

<pre>

When there is text preceding the block

* Item 1
* Item 2
    * Item 2a
    * Item 2b

* Item 1
* Item 2
    * Item 2a
    * Item 2b
    
When there is more text in the block
</pre>
&#13;
&#13;
&#13;

另一种方法。对g使用全局标记match

&#13;
&#13;
var match = document.querySelector("pre").textContent.match(/(\*|\t\*|\s+\*).*/g);

//raw match
console.log(match);

//with trim
match_trim = match.map(function(element){
    return (element.trim());
});

console.log(match_trim);

//with join
match_join = match.join("");

console.log(match_join);
&#13;
<pre>
* Item 1
* Item 2
    * Item 2a
    * Item 2b

* Item 1
* Item 2
    * Item 2a
    * Item 2b
</pre>
&#13;
&#13;
&#13;