2012-06-29 42 views
2

我想替換字符串中所有不必要的中斷。我寫了一個正則表達式替換,但它拋出一個錯誤:語法錯誤:未結束的括號正則表達式替換未終止的括號

var str = "<H1>sdflk</H1><BR><BR><BR><BR><P>test</P><BR><BR><BR><BR>"; 
str.replace(/((</[a-zA-Z0-9]+>)(<BR>)+)/,"\$2"); 

但我沒有看到丟失的parenthese。

+2

歡迎堆棧溢出!請不要使用RegEx解析HTML,因爲它會[驅動你瘋狂](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) 。改爲使用[HTML解析器](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)。 –

+0

我編輯了這個問題。我用1美元而不是2美元 –

回答

2

您必須重新/前添加\

/((<\/[a-zA-Z0-9]+>)(<BR>)+)/ 

另一種選擇是使用RegExp

re = new RegExp("((</[a-zA-Z0-9]+>)(<BR>)+)"); 
"<H1>sdflk</H1><BR><BR><BR><BR><P>test</P><BR><BR><BR><BR>".replace(re,"\$1"); 
+0

這似乎沒有幫助.. –

+0

試試'[/]'而不是'\ /' –

+0

感謝您的解決方案。我現在遇到的問題只是替換字符串中的第一個匹配項。 –