正则表达式 - 任何一个或多个字符后跟一个新行和等号

时间:2013-07-18 02:20:56

标签: javascript regex

我正在制作一个开源的Markdown解析器。

我的正则表达式有点问题,因为我对正则表达式不是很专业。

r = r.replace(/(.*)(\n=$)/g, '<h1>$1</h1>');

我想要的是让\n新行跟随任何一个或多个字符,下一行只能是=中的一个或多个。

输入是:

Hello World\n===

预期产出:

Hello World

我曾经工作的那个,但是当我有两条新线时,它也会剥掉等号。

所以,如果我有这样的东西

Hello World\n\n===

我应该看到这个

Hello World

===

3 个答案:

答案 0 :(得分:1)

你有一个结束锚($),这意味着它只匹配第一个等于之后没有其他字符。此外,看起来您希望能够匹配一个或多个等号。

我认为这就是你想要的:

"Hello World\n===".replace(/(.+)\n=+/g, '<h1>$1</h1>'); // <h1>Hello World</h1>

答案 1 :(得分:1)

尝试

(.+)\r\n=+

r = r.replace(/(.+)\r\n=+/g, '<h1>$1</h1>');

答案 2 :(得分:1)

为了正确匹配标题,我建议使用一个字符串起始锚,即:

s.replace(/^(.+)$\r?\n={3,}/gm, '<h1>$1</h1>')

我正在使用^来匹配开头,$匹配行结尾,并结合/m修饰符,它们将在线上而不是整个主题上操作。

然后,\r?\n将完全一行结束(CRLF或LF)。最后,={3,}将匹配三个或更多等号。