我有这样的内容Go to {#www.google.com##Google#}
,我想将其用作可点击链接,如下所示:
Go to <a href="www.google.com" title="Google">Google</a>
。
我的尝试:var splCharData = splCharData.split(/[\{#\#}]/g);
答案 0 :(得分:3)
找到正则表达式实际上很容易。很容易忘记,即使在JavaScript中,您也应该防范XSS漏洞。
确保值被正确转义的一种方法是实际创建一个锚点,然后查询其outerHTML
属性:
var str = 'Go to {#www.google.com##Google#}',
m = /\{#([^#]+)##([^#]+)#\}/g;
alert(str.replace(m, function($0, $1, $2) {
var a = document.createElement('a');
a.href = 'http://' + $1;
a.title = $2;
a.textContent = $2;
return a.outerHTML;
}));
或者,您可以使用仅字符串方法并手动转义您在属性内推送的任何内容。
var str = 'Go to {#www.google.com##Google#}',
m = /\{#([^#]+)##([^#]+)#\}/g,
htmlspecialchars = function(str) {
return str
.replace('<', '<')
.replace('&', '&')
.replace('>', '>')
.replace('"', '"');
};
alert(str.replace(m, function($0, $1, $2) {
return '<a href="' +
htmlspecialchars('http://' + $1) +
'" title="' +
htmlspecialchars($2) +
'">' +
htmlspecialchars($2) +
'</a>';
}));
答案 1 :(得分:1)
查找:\{#([^#]+)##([^#]+)#\}
替换为:<a href="$1" title="$2">$2</a>