Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于检测斜体标记指示符的正则表达式_Javascript_Regex_Typescript_Markdown - Fatal编程技术网

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您没有过火,您没有实际描述规则,并且您的两个示例不足以可视化您的需求。这些示例是相互排斥的。