我有一个字符串,例如hi Jim check this @inyekwallast:wid=834982948738924797
。我想使用JavaScript分别将其替换为hi Jim check this
<a href="" data="wid=834982948738924797"> @inyekwallast </a>
。
我知道应该使用replace,但是我不知道如何使用 有什么想法或建议吗?
答案 0 :(得分:2)
尝试一下。
var input_str = 'hi Jim check this @inyekwallast:wid=834982948738924797';
var output_str = input_str.replace(/(@\w+):(wid=\d+)/g, '<a href="" data="$2"> $1 </a>');
console.log(output_str);
您可以在控制台中看到
//hi Jim check this <a href="" data="wid=834982948738924797"> @inyekwallast </a>
如果要替换整个文档,则可以使用以下代码...
<script>
document.body.innerHTML = do_links(document.body.innerHTML);
function do_links(body) {
return body.replace(/(@\w+):(wid=\d+)/g, '<a href="" data="$2"> $1 </a>');
}
</script>
答案 1 :(得分:1)
我不知道我是否完全理解您的问题,但是您可以通过RegEx获得所需的部分:
(@\w*)
将匹配'@something'和
(?!:wid=)\d{18} or (?!:wid=)\d*
将匹配宽度(第一个,如果恰好有18位数字,第二个,如果您不知道数字的数量)。我想您可以自己解决其余的问题。否则,别介意。
编辑:使用@Star_Man的答案