我输入如下字符串:
[URL=http://...]Lorem ipsum[/URL]
它们应该在HTML标签中转换:
<a href="http://...">Lorem ipsum</a>
示例:
[URL=http://domain.com]My Awesome Link Text[/URL]
这应该转换为:
<a href="http://domain.com">My Awesome Link Text</a>
我尝试使用正则表达式分割字符串:
> a = "[URL=http://domain.com]My Awesome Link Text[/URL]"
'[URL=http://domain.com]My Awesome Link Text[/URL]'
> s = a.split(/\[|\]|=/)
[ '',
'URL',
'http://domain.com',
'My Awesome Link Text',
'/URL',
'' ]
> o = "<a href=\"" + s[2] + "\">" + s[3] + "</a>"
'<a href="http://domain.com">My Awesome Link Text</a>'
这适用于不在其网址中包含=
的链接。但是当我们有查询字符串参数时,事情会变得复杂:
> a = "[URL=http://domain.com?param=value]My Awesome Link Text[/URL]"
'[URL=http://domain.com?param=value]My Awesome Link Text[/URL]'
> s = a.split(/\[|\]|=/)
[ '',
'URL',
'http://domain.com?param',
'value',
'My Awesome Link Text',
'/URL',
'' ]
> o = "<a href=\"" + s[2] + "\">" + s[3] + "</a>"
'<a href="http://domain.com?param">value</a>'
如何拆分这些字符串,但不拆分网址内的=
?
答案 0 :(得分:1)
不要拆分,只需解析它!
a.match(/\[URL=(.+)\](.+)\[\/URL\]/i)
我们得到:
["[URL=http://domain.com]My Awesome Link Text[/URL]", "http://domain.com", "My Awesome Link Text"]
答案 1 :(得分:1)
模式:
^.*?\[URL=([^\]]*)\]([^\[]*).*$
的更换:
<a href="$1">$2</a>
在JavaScript中:
> "[URL=http://domain.com?asd=a]My Awesome Link Text[/URL]".replace(/^.*?\[URL=([^\]]*)\]([^\[]*).*$/, '<a href="$1">$2</a>')
'<a href="http://domain.com?asd=a">My Awesome Link Text</a>'
答案 2 :(得分:1)
var reg = /\[URL\=([^\]]+)\](.*)\[\/URL\]$/;
var str = '[URL=http://domain.com]My Awesome Link Text[/URL]';
var result = str.match(reg);
结果val:
["[URL=http://domain.com]My Awesome Link Text[/URL]", "http://domain.com", "My Awesome Link Text"]
你可以使用结果:
var html = "<a href=\"" + result[1] + "\">" + result[2] + "</a>";
其他样本测试:
链接文字可能包含[]
或其他代码[red][/red]
,如此
"[URL=http://domain.com]My Awesome [red]Link Text[/red][/URL]"
所以第一个答案不是最佳选择,因为它不允许包含[
或]