我试图让我的正则表达式跨多行工作,“m”似乎也没有用。因此,我的正则表达式适用于以下行的第1行和noT。
答案 0 :(得分: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>'));