用JavaScript替换正则表达式匹配

时间:2012-06-24 18:38:11

标签: javascript regex replace

我使用JavaScript的replace()函数来替换匹配A-Z,a-z,0-9,短划线( - ),下划线(_)和点(。)的正则表达式。我试图用匹配的字符串的一部分替换它周围的标签,但我只用以下代码替换匹配:< b> $ 1< / b&gt ;.

请帮忙吗?

<!DOCTYPE html>
<html>
<body>

<textarea id="demo" rows="10" cols="20">
<table></table>
<b><i>#stock-jsod.20</i>
</b>
</textarea>

<button onclick="testit()">test</button>

<script type="text/javascript">

function testit()
{
var str=document.getElementById("demo").value;
var n = str.replace(/#([A-Za-z0-9_.-]+)/gi, "<b>$0</b>");
document.getElementById("demo").innerHTML=n;
}
</script>

</body>
</html>

我的目标是将#stock-jsod.20替换为<b>#stock-jsod.20</b>,但目前只会将其替换为<b>$0</b>

2 个答案:

答案 0 :(得分:2)

尝试使用“$&”代替“$1”。

更多关于外观 - &gt; https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace#Description

更新:您需要使用document.getElementById("demo").value来获取“document.getElementById("demo").innerHTML”元素的内容,而不是demo

答案 1 :(得分:1)

除了工程师的答案,你也不是A-Za-z0-9_。您可以使用\w。那么你也不需要不区分大小写的开关。这是一个更简单的正则表达式,可以达到同样的效果:

var n = str.replace(/#[\w.-]+/g, "<b>$&</b>");

示例输出:

> str = '#abc #def ghi'
"#abc #def ghi"
> str.replace(/#[\w.-]+/g, "<b>$&</b>");
"<b>#abc</b> <b>#def</b> ghi"