匹配@(\ w +)并在javascript中替换

时间:2014-08-31 19:16:49

标签: javascript regex

我试图在div内容中匹配@(\ w +)并将其删除。

以下是我尝试过的内容:http://jsfiddle.net/mxgde6m7/1/

@(\ w +)有效,但它不会替换为空格。

var content = document.getElementById('contentbox');
    var find = '@(\w+)';
    var reg = new RegExp(find, 'g');
    var result = content.innerHTML.replace(reg, ' ');
    alert(result);

<div id="contentbox">@d <a href="#" id="5">test </a>

我想要的是什么:<div id="contentbox"><a href="#" id="5">test </a> </div>

提前致谢。

修改

好的,一个问题解决了,另一个问题出现了。 我的脚本http://jsfiddle.net/mxgde6m7/9/在那里完美运行,但是当我在我的网站上尝试它时,只有一半可以工作。应该用空格替换@(\ w +)的最后一部分根本不起作用。如果我在控制台(chrome)中复制/粘贴功能的内容,它可以工作,但如果我粘贴功能并且我调用它,它就不起作用。

请帮忙!我被卡住了。

2 个答案:

答案 0 :(得分:1)

使用RegExp构造函数,您需要两个反斜杠\\来代替每个反斜杠\

var find = '@(\\w+)';

答案 1 :(得分:0)

hwnd是正确的,你需要在正则表达式中双重转义\ w。

var find = '@(\\w+)';

但是,你也可以通过定义像这样的regex literal来使这段代码更加清晰 -

var content = document.getElementById('contentbox');
var result = content.innerHTML.replace(/@(\w+)/g, ' ');
alert(result);

这样做并不需要双重转义,因为它不是字符串。