javascript将[]中的文本替换为超链接

javascript to replace a text within [] with hyperlink

本文关键字:文本替换 超链接 javascript      更新时间:2023-09-26

Am正在编写一个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>

有人能给我一个最好的方法吗

谢谢,

如果您有一个表示正则表达式的字符串,您必须调用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);

我尝试将'[[^']]+']作为regexp,得到了正确的输出:

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>