2011-09-11 93 views
3

我有一个字符串,我需要替换所有'并等其应有的价值Javascript查找并替换一组字符?

我使用

var replace = str.replace(new RegExp("[']", "g"), "'");

要做到这一点,但问题是,它似乎是更换'每个字符(所以例如,'成为'''''

任何帮助吗?

+0

错误在于使用'[]'。如果你删除它,它应该工作。或者使用arnaud建议的更紧凑的JS符号。 – xanatos

回答

9

使用这个:

var str = str.replace(/'/g, "'"); 

[']是一个字符类。这意味着大括号内的任何字符

这就是为什么你的/[']/正则表达式用替换字符串替换'的每一个字符。


如果你想使用new RegExp,而不是字面正则表达式:

var str = str.replace(new RegExp(''', 'g'), "'"); 

这有没有好处,如果你想在运行时生成正则表达式除外。

+0

这两个这些似乎产生一个错误“未终止的正则表达式字面量” – Steven

+0

似乎在这里工作:http://jsfiddle.net/TC5he/ – arnaud576875

6

取出支架,这使得字符类(里面的任何字符匹配):

var replace = str.replace(new RegExp("'", "g"), "'"); 

,甚至更好,用文字:

var replace = str.replace(/'/g, "'"); 

编辑:请参阅本关于如何逃避HTML:How to unescape html in javascript?

+0

这两个似乎产生一个错误“未终止的正则表达式字面量” – Steven

+0

@Steven如何你正在使用它? –

2

而不是使用一堆正则表达式替换为此,我会做这样的事情让浏览器为你解码:

function HtmlDecode(s) { 
     var el = document.createElement("div"); 
     el.innerHTML = s; 
     return el.innerText || el.textContent; 
    } 
+1

+1好主意......尽管你不需要调用delete el;(它在严格模式下没有效果,甚至会引发错误)。你可以做'返回el.innerText || el.textContent;' –

+0

感谢您的提示,编辑。 –