0

我有一个文本模式,我试图在 node.js 应用程序中替换它。模式是:

***
some text
***

它是用 javascript 创建的,代码如下:

var textblock = "***" + '\n' + 'some text' + '\n' + "***" + 'the rest of the text block'

以下正则表达式适用于正则表达式,对我来说似乎是正确的:

\*{3}\n.+\n\*{3}

但是当我把它放在我的javascript代码中时,它失败了:

textblock.match(/\*{3}\n.+\n\*{3}/)   // returns null

我测试过,甚至只是 *{3}\n 似乎也不起作用。我是否错过了有关 javascript 如何处理 \n 的一些特殊情况?我也试过 /m,我也试过 [\n\r]。

谢谢!

更新:事实证明 GitHub API 降价处理发布正文并消除换行符。所以我的正则表达式正确的,但我对匹配的文本有误。

4

4 回答 4

0

尝试更改textblockt

var t = "***" + '\n' + 'some text' + '\n' + "***";
alert(t.match(/\*{1}\n.+\n\*{1}/));

小提琴;从正则表达式中删除了一些 * 以检查它是否正常工作)。

于 2013-07-04T22:28:36.570 回答
0

这可能是行尾的问题。如果你匹配[\n\r]而不只是\n它工作正常。

这是一个要演示的小提琴:http: //jsfiddle.net/xD8a5/

于 2013-07-04T22:33:22.713 回答
0

我正在查找和替换的文本来自通过 API 获取的 GitHub 问题。事实证明,当您连续放置多个星号时,它们会省略前后的换行符,因为它们会将其转换为图形行。

答案是不需要实际的换行符。这有效:

match(/\*{3}[\n\r]*.+[\n\r]*\*{3}/)

感谢大家的帮助!

于 2013-07-05T02:15:54.517 回答
0

使用\\n而不是\n我尝试过我的代码,它工作正常

于 2014-02-05T14:19:01.610 回答