JavaScript解析bbcode网址

Eth*_*gue 2 javascript regex bbcode

我一直试图在JavaScript中解析bbcode URL标记.

例如,

[url=http://examp.le]linktext[/url]
Run Code Online (Sandbox Code Playgroud)

应该成为

<a href="http://examp.le">linktext</a>. 
Run Code Online (Sandbox Code Playgroud)

我对此做了很多研究,并且对正则表达式有了非常深刻的理解.所以问题是,我该怎么做?

Ole*_*gas 5

你可以尝试这个正则表达式:

\[url=([^\s\]]+)\s*\](.*(?=\[\/url\]))\[\/url\]
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

所以,在JavaScript中你可以使用这样的东西:

text = text.replace(/\[url=([^\s\]]+)\s*\](.*(?=\[\/url\]))\[\/url\]/g, '<a href="$1">$2</a>')
Run Code Online (Sandbox Code Playgroud)

jsFiddle演示

如果你想解析短格式

[url]http://ya.ru[/url]
Run Code Online (Sandbox Code Playgroud)

必须转变为

<a href="http://ya.ru">http://ya.ru</a>
Run Code Online (Sandbox Code Playgroud)

你需要以下正则表达式:

\[url\](.*(?=\[\/url\]))\[\/url\]
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

和相应的JavaScript:

 text = text.replace(/\[url\](.*(?=\[\/url\]))\[\/url\]/g, '<a href="$1">$1</a>')     
Run Code Online (Sandbox Code Playgroud)