2014-08-31 76 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); 

這樣做,這樣不需要雙重轉義,因爲它不是一個字符串。