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>')