无法使用正则表达式替换()

时间:2014-04-09 15:11:08

标签: javascript regex

我想替换所有" w"与" e":

var d = document.getElementById('hash').innerHTML.replace("/w/g","e");

但它并没有取代任何东西!之前我曾尝试使用替换(" w"," e"),但它只替换了第一个" w"。那么,该怎么办?

2 个答案:

答案 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");