正则表达式匹配markdown代码块

时间:2015-05-19 10:36:13

标签: javascript regex

我有以下字符串:

`example.com` foo bar `baz`

需要替换为:

<code>example.com</code> foo bar <code>baz</code>

到目前为止,我正在使用以下正则表达式:

var str = '`example.com` foo bar `baz`'
str.replace(/`(?:(.*$)\n)?([\s\S]*)`/gm, '<code>' + '$2' + '</code>')

结果:

"<code>example.com` foo bar `baz</code>"

预期结果:

"<code>example.com</code> foo bar <code>baz</code>"

2 个答案:

答案 0 :(得分:3)

您可以使用:

var s = '`example.com` foo bar `baz`';
var r = s.replace(/`([^`]+)`/g, '<code>$1</code>');
//=> <code>example.com</code> foo bar <code>baz</code>

答案 1 :(得分:1)

如上所述,如果不尝试实现转义字符等,则只能使用正则表达式。

以下是一个示例代码:

&#13;
&#13;
var s = '`example.com` foo bar `baz`';
var r = s.replace(/`(.*?)`/g, '<code>$1</code>');
window.alert("input: "+s+"\nresult: "+r);
&#13;
&#13;
&#13;

请注意:.*?匹配器会尝试找到尽可能少的字符。它被称为非贪婪