Javascript是否查找并替换一组字符?
我有一个字符串,需要替换所有的Javascript是否查找并替换一组字符?,javascript,Javascript,我有一个字符串,需要替换所有的'等设置为其正确值 我正在使用 var replace=str.replace(新的RegExp(“[';]”,“,“g”),“”) 这样做,但问题是它似乎在为每个字符替换,(例如,';变成, 有什么帮助吗?使用以下方法: var str = str.replace(/'/g, "'"); [';]是一个字符类。它表示大括号内的任何字符 这就是为什么您的/[';]/正则表达式用替换字符串替换';的每个字符 如果
'代码>等设置为其正确值
我正在使用
var replace=str.replace(新的RegExp(“[';]”,“,“g”),“”)代码>
这样做,但问题是它似乎在为每个字符替换,
(例如,';
变成,
有什么帮助吗?使用以下方法:
var str = str.replace(/'/g, "'");
[';]
是一个字符类。它表示大括号内的任何字符
这就是为什么您的/[';]/
正则表达式用替换字符串替换';
的每个字符
如果要使用new RegExp
而不是regex文本:
var str = str.replace(new RegExp(''', 'g'), "'");
这没有任何好处,除非您想在运行时生成regexp。去掉括号,这会使字符类(其中的任何字符都匹配):
或者更好地使用文字:
var replace = str.replace(/'/g, "'");
编辑:查看关于如何转义HTML的问题:与其为此使用一堆正则表达式替换,不如这样做,让浏览器为您处理解码:
function HtmlDecode(s) {
var el = document.createElement("div");
el.innerHTML = s;
return el.innerText || el.textContent;
}
错误出现在使用[]
时。如果您删除它们,它应该会起作用。或者使用arnaud建议的更紧凑的JS表示法。这两种表示法似乎都会生成错误“Unterminated regular expression literal”这两种表示法似乎都会生成错误“Unterminated regular expression literal”@Steven您是如何使用它的?+1好主意……尽管您不需要调用delete el;
(它没有效果,甚至在严格模式下会抛出错误)。您只需执行返回el.innerText | el.textContent;
function HtmlDecode(s) {
var el = document.createElement("div");
el.innerHTML = s;
return el.innerText || el.textContent;
}