2011-08-03 112 views
1

我需要一種方法只<br>的Javascript正則表達式用引號

我用正則表達式一個完整的新手,以取代<br class="">悉數亮相,但我想:

str = str.replace(/<br\sclass=\"\"\s>/g, "<br>"); 

,並沒有奏效。

什麼是適當的正則表達式來做到這一點?

+1

要做到這一點,爲什麼呢?一個空的'class'屬性不會傷害。 –

+0

你幾乎有它:'STR = str.replace(/
/克, 「
」);' – ridgerunner

回答

1

我不會使用正則表達式來做到這一點,而是實際上解析html和刪除類。 這是未經測試的,但可能有效。

// Dummy <div> to hold the HTML string contents 
var d = document.createElement("div"); 
d.innerHTML = yourHTMLString; 

// Find all the <br> tags inside the dummy <div> 
var brs = d.getElementsByTagName("br"); 

// Loop over the <br> tags and remove the class 
for (var i=0; i<brs.length; i++) { 
    if (brs[i].hasAttribute("class")) { 
    brs[i].removeAttribute("class"); 
    } 
} 

// Return it to a string 
var yourNewHTMLString = d.innerHTML; 
+0

獲取/設置/是的removeAttribute Buggy在各種構建IE的和最好避免。需要修改'className' DOM屬性。 – 2011-08-03 17:52:57

+0

這是一個更好的解決方案,謝謝。 – Jesse

+0

在Opera 11中很棒。在IE6中爆炸。 – ridgerunner

0

\s恰好匹配一個空格字符。你可能想要\s*,它將匹配任何數字(包括零)的空格字符,並且\s+,它們將至少匹配一個。

str = str.replace(/'<br\s+class=\"\"\s*>/g, "<br>"); 
0

一種方法是使用下面的

var s = '<br class="">'; 
var n = s.replace(/(.*)(\s.*)(>)/,"$1$3"); 
console.log(n)