我试图让我的正则表达式跨多行工作,“m”似乎也不起作用。所以,我的正则表达式适用于第一行,而不适用于以下几行。
问问题
145 次
1 回答
2
您可以跳过该match
部分,只需一步完成所有操作:
> "the *text* is to be replaced \n by *text*".replace(/\*([\s\S]*?)\*/g, '<i>$1</i>');
"the <i>text</i> is to be replaced \n by <i>text</i>"
.
匹配任何字符,但不包括换行符。[\s\S]
匹配任何字符,包括换行符。我将您的搜索正则表达式更改为
\*([\s\S]*?)\*
,它非贪婪地匹配星号之间的内容。替换字符串是
<i>$1</i>
.$1
替换为第一个捕获组的内容,即您的文本。
另外,因为看起来您正在尝试将 Markdown 转换为 HTML,请尝试使用预制的 JS 转换器:http ://www.showdown.im/
你可以像这样使用它:
var str = "the *text* is to be *replaced \n by* *text*";
alert(str.replace(/\*([\s\S]*?)\*/g, '<i>$1</i>'));
于 2012-10-09T03:03:11.970 回答