我正在编写一个javascript来将[]中的文本替换为html链接。但是我坚持生成一个正则表达式来匹配[]中的任何字符串,然后用超链接替换它。
以下是我尝试的代码段:
<html>
<head>
</head>
<body id="body">
Hello World [1234]<br>
[322]<br>
Hello
</body>
</html>
<script type="text/javascript">
var bodyText=document.getElementById('body').innerHTML;
var pattern = "\[(.*?)\]";
var replaceText = "<a href="www.mysite.com">Pradeep</a>";
document.getElementById('body').innerHTML = bodyText.replace(pattern/gi, replaceText);
</script>
任何人都可以建议我这样做的最好方法
谢谢,
答案 0 :(得分:2)
如果你有一个表示正则表达式的字符串,你必须调用new RegExp(str)
来构建一个正则表达式,但你可以在这里创建一个正则表达式。此外,i
标志不是必需的,因为正则表达式中没有任何内容引用字母。并且,您不使用捕获组,因此您也可以消除它们。最后,您需要转义字符串中的引号,因为解释器现在认为您的字符串在href=
之后结束:
var bodyText = document.getElementById('body').innerHTML;
var pattern = /\[.*?\]/g;
var replaceText = "<a href=\"www.mysite.com\">Pradeep</a>";
document.getElementById('body').innerHTML = bodyText.replace(pattern, replaceText);
答案 1 :(得分:1)
我尝试\[[^\]]+\]
作为正则表达式并获得正确的输出:
var s = 'Hello World [1234]<br>[322]<br>';
s = s.replace(/\[[^\]]+\]/ig, '<a href="http://www.mysite.com">Pradeep</a>');
// output
// Hello World <a href="http://www.mysite.com">Pradeep</a><br><a href="http://www.mysite.com">Pradeep</a><br>