Javascript 查找空格填充的星号对
我需要找到破坏特定标记解析器的格式不良的标记。我正在搜索一个正则表达式,它会发现Javascript 查找空格填充的星号对,javascript,regex,markdown,Javascript,Regex,Markdown,我需要找到破坏特定标记解析器的格式不良的标记。我正在搜索一个正则表达式,它会发现**粗体文本**在星号之前或之后错误地填充了空格。例如,**这是错误的**,**这也是**,**这也是**,**这也是正确的**。当然,行通常可以同时包含这两个元素。例如,以下是一些测试用例: This line is **correct** and **properly marked down**. But this line **is not** because ** the second bold is wro
**粗体文本**
在星号之前或之后错误地填充了空格。例如,**这是错误的**
,**这也是**
,**这也是**
,**这也是正确的**
。当然,行通常可以同时包含这两个元素。例如,以下是一些测试用例:
This line is **correct** and **properly marked down**.
But this line **is not** because ** the second bold is wrong**.
** Also** this line is wrong **even though this is right**.
我尝试了
(?:\**[^\*]*\s\*\**)
,但这实际上捕获了之间的部分(没有用星号括起来的部分)。有什么建议吗?希望这会有所帮助,这里我们使用的组合可能是**空格-单词-空格**
,**空格**
和**空格-单词**
正则表达式:(?试试这个:
(?:\*\*\S.+?\S\*\*|(\*\*(?:\s.+?|.+?\s)\*\*))
说明:
// Line must contain:
(?:\*\*\S.+?\S\*\*| // Correctly formatted block OR
( // block with BAD formatting - space
\*\*(?:\s.+?| // to the left of formatting OR
.+?\s)\*\* // to the right of formatting
)
)
//行必须包含:
(?:\*\*\S.+?\S\*\*\*\124;//格式正确的块或
(//格式错误的块-空格
\*\*(?:\s.+?|//在格式化或
.+?\s)\*\*//在格式右侧
)
)
这是您需要的javascript友好模式:
^[^*]*(?:\*{2}[^][^*]*[^]\*{2}[^*\n]*)*(\*{2}(?:[^*]+[^*]+)\*{2})。*$
解释(非正式用语):
我认为他只需要匹配格式不好的降价。演示表明,它发现所有降价格式都不好,而且都是好的ones@MostafaHussein我已经更新了我的帖子,您可以查看。我认为您在这篇文章中做得不错,所以我将把这篇文章送给您。(?谢谢,@SahilGulati和@mickmackusa!唯一的皱纹:我在使用Javascript(Atom内部,基于Javascript的文本编辑器)。据我所知,Javascript正则表达式不支持正向查找。我如何调整正则表达式以使用Javascript工作的东西来替换查找?以下是我为解决Javascript查找不足而提出的方法。有谁能提供更好的替代方法吗?(?:\s^^)(?:\*\*)(?:\s+([^\*])\s+(?:\s+([^\*])(?:\s+([^\*]+))|([^\*]+)\s+(:\*\*)
您使用的是什么语言?实际上使用的是文本编辑器(Atom),但我非常确定底层正则表达式引擎是Javascript。
^[^*]* # match anything preceding the first *
(?:\*{2}[^ ][^*]*[^ ]\*{2}[^*\n]*)* # match zero or more valid sets of **'s, so we don't lose track of what is an opener/closer
(?:\*{2}(?: [^*]+|[^*]+ )\*{2}) # REQUIRE just one invalid ** set
.*$ # after one invalid set is found, it doesn't matter what trails it before end of line