Javascript 用于检测斜体标记指示符的正则表达式
我有以下测试字符串:Javascript 用于检测斜体标记指示符的正则表达式,javascript,regex,typescript,markdown,Javascript,Regex,Typescript,Markdown,我有以下测试字符串: const string = '*Foo* **Foo** ***Foo*** ** ****'; 我想使用RegExp提取以下与名为content的命名捕获组的匹配: STRING: *Foo* **Foo** ***Foo*** ** **** MATCH: ^^^^^ ^^^^^ ^^ CONTENT: ^^^ ^^^ 同样,匹配空白也很好 const string = '* Foo * ** Foo
const string = '*Foo* **Foo** ***Foo*** ** ****';
我想使用RegExp
提取以下与名为content
的命名捕获组的匹配:
STRING: *Foo* **Foo** ***Foo*** ** ****
MATCH: ^^^^^ ^^^^^ ^^
CONTENT: ^^^ ^^^
同样,匹配空白也很好
const string = '* Foo * ** Foo ** *** Foo *** * * ** **';
这将导致以下匹配:
STRING: * Foo * ** Foo ** *** Foo *** * * ** **
MATCH: ^^^^^^^ ^^^^^^^ ^^^
CONTENT: ^^^ ^^^ ^
我尝试了几种正则表达式模式,但似乎没有得到\*
的正确模式,但没有得到\*{2}
以下是其中之一:
/(?!\*\*\s*?.+?\s*?\*\*)\*\s*?(?<content>.+?)\s*?\*/g
/(?!\*\*\s*?。+?\s*?\*\*)\*\s*?(?。+?)\s*?\*/g
结果是:
我怎样才能让它工作?谢谢 我不知道这是否正是你想要的,但也许它会给你带来动力:
(?:^|(?<=\s))(?:\*\s*(?<content1>[^*]+)\s*?\*|\*{3}\s*(?<content3>[^*]*)\s*\*{3})(?:$|(?=\s))
(?)^|(?请给我一个评论,为什么你投了否决票。我描述了我的问题。我还添加了一个示例,说明我的RegExp
看起来如何。可能有人同意这样一个事实,即永远不应该使用regex解析标记。类似于html或xml,但使用令牌扫描程序。@GottZ我并没有真正尝试构建解析器。我只是在尝试构建一个编辑器,当在选择中找到它时,它可以删除指示符。我已经做了相当多的工作,目前这是一件很难做到的事情。虽然我同意正则表达式不像markdown那样适合复杂的语言,但在您提供的简单上下文中查看这个问题,我相信这个正则表达式会起作用:\*\s*?(.*?)[S*\**/COD>。但是,从整体上看问题,你应该多考虑一点。如果你想把空格括起来,就把它们用括号括起来。让我知道这是否有帮助,我会写一个实际答案。我不确定这是否是你要找的。这看起来很有希望。第二场比赛仍然很难。AIN***
作为前缀和***
作为后缀,而不仅仅是一个*
。我对它进行了一些更新。它仍然不完美,但Closer您应该警告说,命名捕获组在JS中不可用。Chrome是唯一一个支持它的浏览器。我很快会发布一个更简单的新问题。我已经过火了这里很明显。@sebastiankrooll您没有过火,您没有实际描述规则,并且您的两个示例不足以可视化您的需求。这些示例是相互排斥的。