我想替换所有" w"与" e":
var d = document.getElementById('hash').innerHTML.replace("/w/g","e");
但它并没有取代任何东西!之前我曾尝试使用替换(" w"," e"),但它只替换了第一个" w"。那么,该怎么办?
答案 0 :(得分:6)
如果您确实想要修改元素的内容(innerHTML
)(问题的原始版本很可能),您应该使用:
var el = document.getElementById('hash');
el.innerHTML = el.innerHTML.replace(/w/g, 'e');
... as replace
(与任何其他字符串方法一样)不会更改操作的字符串 - 而是创建一个新字符串(替换操作的结果)并返回它。
如果您只想制作元素内容的新变换版本,唯一的变化应该是使用正确的正则表达式对象,使用正则表达式文字(用/
符号分隔)编写)或new RegExp(...)
构造。在这种特殊情况下,后者绝对是一种矫枉过正。所以只需删除/w/g
周围的引号(已经在上面的代码片段中完成),你就可以了。 )
至于'... .replace('w', 'e')
确实只替换一次......'部分,这实际上是一个很常见的问题:当使用字符串作为第一个参数时,.replace()
将完成其工作no more than once
答案 1 :(得分:5)
你给replace
一个字符串而不是一个正则表达式。使用真正的正则表达式:
var d = document.getElementById('hash').innerHTML.replace(/w/g,"e");