javascript - 正则表达式匹配多个空格直到一个字符

标签 javascript regex

我正在尝试创建一个正则表达式来检测 Markdown 引用 block 。
到目前为止,这是我的正则表达式:

(?:^|\n)[ \t]*(>[ \t]*\S(?:(?!\n(\s*\n)+[^>])[\s\S])*)

(?:^|\n)            beginning of string, or a line break
[ \t]*              optional spaces
>[ \t]*\S           `>` followed by optional spaces and at least one character
( ... [\s\S])*      capture any following character\white-space multiple times
(?!\n(\s*\n)+[^>])  stop capture if next following characters are
                    at least 2 line breaks mixed with other white-spaces
                    followed by anything but `>`

一切正常,除了负向前瞻:如果遇到超过 2 个换行符,捕获就会停止。

Regex101当我想要 3 个时,显示 4 个匹配。有什么指示吗?

最佳答案

我相信您的问题在这里:

(?!\n(\s*\n)+[^>])

[^>]\n 匹配。将其更改为:

(?!\n(\s*\n)+[^>\s])

http://regex101.com/r/mT4wC4

关于javascript - 正则表达式匹配多个空格直到一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23682320/

相关文章:

javascript - 为什么我应该从 Axios 调用中返回 "undefined",而它应该返回对象?

java - 使用正则表达式获取字符串中每个单词的第一个字母

regex - 正则表达式 [A-z] 和 [a-zA-Z] 之间的区别

javascript - 在 JavaScript 中如何修复元素显示和变量创建之间的初始差异

javascript - 根据数组输入过滤对象数组

python - 识别 Pandas 数据框列是否包含列表中的元素

javascript - RegEx - 没有顺序空格

python - 如何修改此 REGEX 以获取测试字符串中的所有日期

javascript - 如何限制 FireBase firestore get() 方法返回的记录?

javascript - 在 HTML5 Canvas 上从图像中绘制字体