0

我从 .getAttribute() 中得到以下字符串:

ctl00$m$g_ff7ec6ac_ec2e_4402_aaaa_7fcce245ff1b$ctl03$_UserName

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

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

...不起作用。

第二次尝试:

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

...不起作用。

第三次尝试:

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

...不起作用。

所以...有人可以帮忙吗?感谢所有的努力!

编辑:需要让它适用于 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, "_");

编辑2:

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

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

返回一个字符串,但 .replace() 或 .split() 无法使用它。要开始工作,您需要这样做

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

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

4

1 回答 1

6

利用

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

无需转义第二个字符串。

来自MDN

返回一个新字符串,其中模式的部分或全部匹配被替换替换。模式可以是字符串或正则表达式,替换可以是字符串或每次匹配调用的函数。

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

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

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

你可以做

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

示范

于 2012-11-05T15:32:09.450 回答