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

Javascript 正则表达式-后跟一个新行和等号的任何一个或多个字符,javascript,regex,Javascript,Regex,我正在做一个开源的降价解析器 我的正则表达式有点问题,因为我不是正则表达式专家 r = r.replace(/(.*)(\n=$)/g, '<h1>$1</h1>'); 您有一个结束锚($),这意味着它将只匹配第一个等于后面没有其他字符的情况。此外,看起来您希望能够匹配一个或多个等号 我想这就是你想要的: "Hello World\n===".replace(/(.+)\n=+/g, '<h1>$1</h1>'); // <h1>He

我正在做一个开源的降价解析器

我的正则表达式有点问题,因为我不是正则表达式专家

r = r.replace(/(.*)(\n=$)/g, '<h1>$1</h1>');
您有一个结束锚(
$
),这意味着它将只匹配第一个等于后面没有其他字符的情况。此外,看起来您希望能够匹配一个或多个等号

我想这就是你想要的:

"Hello World\n===".replace(/(.+)\n=+/g, '<h1>$1</h1>'); // <h1>Hello World</h1>
“Hello World\n==”。替换(/(.+)\n=+/g,$1');//你好,世界
试试看

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

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

s.replace(/^(.+)$\r?\n={3,}/gm, '<h1>$1</h1>')
s.replace(/^(+)$\r?\n={3,}/gm,$1')
我正在使用
^
来匹配开始和
$
来匹配行结束,结合
/m
修饰符,它们将对行而不是整个主题进行操作


然后,
\r?\n
将仅显示一行结尾(CRLF或LF)。最后,
={3,}
将匹配三个或更多的等号。

对不起,我的标题错了:/I应该使用\r\n吗?或者仅仅\n就足够了?@Ali这取决于您的特定用例。如果您知道输入只有
\n
,为了简单起见,我会使用它。如果您想支持任何一行公共结尾,我将使用
(\r?\n |\r)
,它将与
\n
\r
\r\n
一起工作。因此它将类似于
(/(.+)(\r?\n |\r)=+/g,$1')??@Ali是的,没错。如果这是来自数据库或类似的东西,我建议在将行尾保存到数据库之前对其进行规范化。这样你就不必通过JavaScript来清理它们了。@Ali很乐意帮忙。快乐的编码。我喜欢这样:D非常适合匹配三个或更多的等号:)但实际上这里有一个问题。如果有两条额外的线,则去除等号:/
(.+)\r\n=+

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