我从.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中,这个解决方案效果很好。
答案 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/);