任意の一文字を表す正規表現

任意の一文字を表すメタ文字「.」は、忘れがちだけど改行文字だけは含まない。これはPerlでもPHPでもJavaScriptでも共通。

var re = new RegExp('q[qrwx]?(\\W).*?\\1', 'gm');

上記はPerlのquote表現である qw/.../ 等にマッチするが、複数行にまたがっている場合はマッチしない。

真に任意の一文字を表すには、BKっぽいけど文字クラス[\s\S]で可能。

var re = new RegExp('q[qrwx]?(\\W)[\\s\\S]*?\\1', 'gm');

(?:\s|\S)の方が高速かも。