Regular expression matches markdown code

I have the following line:

`example.com` foo bar `baz`

This must be replaced by:

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

So far I have been using the following regular expression:

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

Results in:

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

Expected Result:

"<code>example.com</code> foo bar <code>baz</code>"
+4
source share
2 answers

You can use:

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

As already mentioned, you can only use regular expressions if you are not trying to implement escape characters, etc.

Here is a sample code:

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

Please note: the match .*?will try to find as few characters as possible. He is called not greedy .

+1
source

All Articles