0

我试图让我的正则表达式跨多行工作,“m”似乎也不起作用。所以,我的正则表达式适用于第一行,而不适用于以下几行。

4

1 回答 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 回答