0

.getAttribute()から次の文字列を取得しました。

ctl00$m$g_ff7ec6ac_ec2e_4402_aaaa_7fcce245ff1b$ctl03$_UserName

それを「ストリング」と呼びましょう。ここで、$を_に置き換える必要があります。私は試した:

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

...動作しません。

2回目の試行:

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

...動作しません。

3回目の試行:

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ではこのソリューションがうまく機能します。

4

1 に答える 1

6

使用する

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

2番目の文字列をエスケープする必要はありません。

MDNから:

パターンの一部またはすべての一致が置換によって置き換えられた新しい文字列を返します。パターンは文字列またはRegExpにすることができ、置換は文字列または一致ごとに呼び出される関数にすることができます。

また、replaceは元の文字列を変更しないことにも注意してください。戻り値を取り戻す必要があります。

また、編集に関しては、Internet Explorerのmatch関数はg、修飾子がなくても配列を返すように見えることに注意してください。

matchメソッドが一致を見つけられない場合、nullを返します。一致が見つかった場合、matchは配列を返し、グローバルRegExpオブジェクトのプロパティが更新されて一致の結果が反映されます。

できるよ

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

デモンストレーション

于 2012-11-05T15:32:09.450 に答える