練炭ブログ

X680x0、Irvine、DMonkey、Proxomitron などの情報を扱ってます。

萌え壁紙 新着情報

コメントなし»

今月のカレンダー壁紙 | SQUARE ENIX MEMBERS
『ドラゴンクエストモンスターズ ジョーカー3』
『ライフ イズ ストレンジ』
『最弱無敗の神装機竜《バハムート》』唯浦史

[スニーカー文庫公式サイト]ザ・スニーカーWEB
アンケート回答で壁紙
『四億円当てた勇者ロトと俺は友達になってる』佐嶋真実
『ノーブルウィッチーズ』島田フミカネ
締切り : 2016年 3月 1日 10時 00分

ビッグガンガン | SQUARE ENIX
『君死ニタマフ事ナカレ』森山大輔

falcom_ファルコムホームページ
『東亰ザナドゥ』カレンダー壁紙2016年3月

オーバーラップ文庫
アンケート回答で壁紙
『ありふれた職業で世界最強 3』たかやKi
『ガンズバースト・オンライン2』我美蘭
『異世界魔法は遅れてる!⑥』himesuz
『最強ゲーマー、異世界にて実況プレイ中 2』加藤いつわ
『ワールド・ティーチャー 異世界式教育エージェント 2』Nardack

DMonkey: RegExp.$0~$9 の書き換えの影響範囲

コメントなし»

RegExp.$0~$9 と、正規表現リテラル /…/ で生成した全ての regexp インスタンスの $0~$9 は共有されている。

したがって、
RegExp.$1 = 123;
のようにすると全ての regexp インスタンスの $1 も変更される。

new RegExp() で生成した RegExp インスタンスでマッチングを行うと当該インスタンスの $0~$9 が更新される。

また同時に RegExp.$0~$9 も更新されるが、これは全ての regexp インスタンスの $0~$9 とも共有されているのでそちらの値も更新される。

一方、
var r = new RegExp ('a'); r.$1 = 123;
のようにすると当該インスタンスの $1 だけが書き換わる。

このように、RegExp インスタンスでは、正規表現マッチングによる $0~$9 の更新と代入式による $0~$9 の書き換えでは影響範囲が異なる。

ちなみに、regexp インスタンスに対して
/a/.$1 = 123;
/a/ ['$1'] = 123;
といった方法はエラーになり、書き換えはできない。

RegExp.$1 = 123;
alert (/a/.$1);    // 123

new RegExp ('(a)').test ('a');
alert (RegExp.$1);    // a
alert (/a/.$1);    // a

new RegExp ('(a)').$1 = 123;
alert (/a/.$1);    // a