我有以下字符串:
`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>"
答案 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)
如上所述,如果不尝试实现转义字符等,则只能使用正则表达式。
以下是一个示例代码:
var s = '`example.com` foo bar `baz`';
var r = s.replace(/`(.*?)`/g, '<code>$1</code>');
window.alert("input: "+s+"\nresult: "+r);
&#13;
请注意:.*?
匹配器会尝试找到尽可能少的字符。它被称为非贪婪。