需要用Javascript将"$"替换为"_"

0 javascript regex replace

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

ctl00$m$g_ff7ec6ac_ec2e_4402_aaaa_7fcce245ff1b$ctl03$_UserName
Run Code Online (Sandbox Code Playgroud)

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

String.replace(/\$/g, "\_");
Run Code Online (Sandbox Code Playgroud)

......不起作用

第二次尝试:

String.replace(/$$/g, "\_");
Run Code Online (Sandbox Code Playgroud)

......不起作用

第三次尝试:

String.replace(/\$$/g, "\_");
Run Code Online (Sandbox Code Playgroud)

......不起作用

那么...... 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, "_");
Run Code Online (Sandbox Code Playgroud)

EDIT2:

我自己得到了答案.

mailName = document.body.innerHTML.match(/ctl00\$.+EmailAddress/);
Run Code Online (Sandbox Code Playgroud)

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

mailID = '"' + document.body.innerHTML.match(/ctl00\$.+EmailAddress/) + '"';
Run Code Online (Sandbox Code Playgroud)

之后一切都很好.不知道为什么,但在IE8/9中这个解决方案效果很好.

Den*_*ret 6

使用

yourString = yourString.replace(/\$/g, "_");
Run Code Online (Sandbox Code Playgroud)

无需逃避第二个字符串.

来自MDN:

返回一个新字符串,其中一个或所有匹配的模式由替换替换.模式可以是字符串或RegExp,替换可以是字符串或要为每个匹配调用的函数.

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

并且,关于您的编辑,请注意,即使没有修饰符,Internet Explorer匹配功能似乎也会返回一个数组g:

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

你可以做

var str = ''+ document.body.innerHTML.match(/ctl00\$.+EmailAddress/);
Run Code Online (Sandbox Code Playgroud)

示范