2014-08-31 82 views
0

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

这是我试过的: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 +)的最后部分完全不起作用。如果我复制/粘贴功能的内容在控制台(铬),它的工作原理,但如果我粘贴功能,我打电话给它,它不起作用。

请帮忙!我卡住了。

+0

使用\\而不是\ – 2014-08-31 19:22:26

+0

Pfff ....非常感谢。 – nikodemus 2014-08-31 19:26:52

+0

你也可以使用[正则表达式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions),所以不涉及字符串 - var reg =/@ (\ w +)/ g;' – 2014-08-31 19:26:58

回答

1

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

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

另外,谢谢,先生。 – nikodemus 2014-08-31 19:29:33

0

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

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

但是,你也能做出这样的代码更定义了一个regex literal像这样清洁 -

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

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