需要用Javascript将“$”替换为“_”

时间:2012-11-05 15:31:29

标签: javascript regex replace

我从.getAttribute()获得了以下字符串:

ctl00$m$g_ff7ec6ac_ec2e_4402_aaaa_7fcce245ff1b$ctl03$_UserName

我们称之为“字符串”。现在我需要将$替换为_。我试过了:

String.replace(/\$/g, "\_");

......不起作用。

第二次尝试:

String.replace(/$$/g, "\_");

......不起作用。

第三次尝试:

String.replace(/\$$/g, "\_");

......不起作用。

所以...... Ca有人帮忙吗?谢谢你的努力!

编辑:需要让它适用于IE8 / 9

此时的代码:

mailName = document.body.innerHTML.match(/ctl00\$.+EmailAddress/);
alert(mailName); // String is "ctl00$m$g_ff7ec6ac_ec2e_4402_aaaa_7fcce245ff1b$ctl03$_UserName"

mailName2 = mailName.replace(/\$/g, "_");

EDIT2:

......我自己得到了答案。

mailName = document.body.innerHTML.match(/ctl00\$.+EmailAddress/);

返回一个字符串,但.replace()或.split()不能使用它。为了得到工作,你需要像这样做

mailID = '"' + document.body.innerHTML.match(/ctl00\$.+EmailAddress/) + '"';
之后一切都很好。不知道为什么,但在IE8 / 9中,这个解决方案效果很好。

1 个答案:

答案 0 :(得分:6)

使用

yourString = yourString.replace(/\$/g, "_");

无需转义第二个字符串。

来自the MDN

  

返回一个新的字符串,其中一些或所有匹配的模式被替换为   一个替代品。模式可以是字符串或RegExp,以及   replacement可以是每个匹配要调用的字符串或函数。

另请注意,replace不会更改原始字符串。您需要取回返回的值。

并且,关于您的修改,请注意即使没有g修饰符,match function of Internet Explorer似乎也会返回一个数组:

  

如果match方法找不到匹配项,则返回null。如果它   找到一个匹配项,匹配返回一个数组,以及该属性   更新全局RegExp对象以反映匹配结果。

你可以做到

var str = ''+ document.body.innerHTML.match(/ctl00\$.+EmailAddress/);

Demonstration