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

javascript将[]内的文本替换为超链接,javascript,regex,Javascript,Regex,我正在编写javascript以将[]中的文本替换为html链接。但是我一直在生成一个正则表达式来匹配[]中的任何字符串,然后用超链接替换它 下面是我尝试过的代码片段: <html> <head> </head> <body id="body"> Hello World [1234]<br> [322]<br> Hello </body> </html> <script type="tex

我正在编写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>

你好,世界[1234]
[322]
你好 var bodyText=document.getElementById('body').innerHTML; var pattern=“\[(.*?\]”; var replaceText=“”; document.getElementById('body').innerHTML=bodyText.replace(pattern/gi,replaceText);
有谁能给我建议一个最好的方法吗


谢谢,

如果您有一个表示regexp的字符串,您必须调用
new regexp(str)
来从中构建regexp,但是您可以在这里创建一个regexp文本。另外,
i
标志是不必要的,因为regexp中没有任何内容涉及字母。而且,您不使用捕获组,因此也可以消除它们。最后,您需要转义字符串中的引号,因为解释器现在认为您的字符串在
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);
var bodyText=document.getElementById('body').innerHTML;
变量模式=/\[.*?\]/g;
var replaceText=“”;
document.getElementById('body').innerHTML=bodyText.replace(模式,replaceText);

如果您有一个表示regexp的字符串,那么您必须调用
new regexp(str)
来从中构建regexp,但是您可以在这里创建一个regexp文本。另外,
i
标志是不必要的,因为regexp中没有任何内容涉及字母。而且,您不使用捕获组,因此也可以消除它们。最后,您需要转义字符串中的引号,因为解释器现在认为您的字符串在
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);
var bodyText=document.getElementById('body').innerHTML;
变量模式=/\[.*?\]/g;
var replaceText=“”;
document.getElementById('body').innerHTML=bodyText.replace(模式,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>
var s='Hello World[1234]
[322]
'; s=s.replace(/\[^\]]+\]/ig',); //输出 //你好,世界


我尝试了
\[[^\]]+\]
作为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>
var s='Hello World[1234]
[322]
'; s=s.replace(/\[^\]]+\]/ig',); //输出 //你好,世界


非常感谢,它工作得很好。我现在面临着另一个挑战。我的html代码的某些部分有以下几行:(In[;82681];)refs
我必须在[]中获取数字,然后用超链接替换它。我尝试过使用document.getElementsByClassName('error'),但它不起作用。我怎样才能让它工作?如果[]中有多个这样的数字,我还需要在一个循环中替换所有这些数字。e、 g:[123][234][345]……非常感谢,它工作得很好。我现在面临着另一个挑战。我的html代码的某些部分有以下几行:(In[;82681];)refs
我必须在[]中获取数字,然后用超链接替换它。我尝试过使用document.getElementsByClassName('error'),但它不起作用。我怎样才能让它工作?如果[]中有多个这样的数字,我还需要在一个循环中替换所有这些数字。e、 g:[123][234][345]。。。