読者です 読者をやめる 読者になる 読者になる

javascriptで文字列→正規表現

弾さんはこんな風に

String.prototype.quotemeta = function(){
  return this.replace(/([^0-9A-Za-z_])/g, '\\$1');
}

書いてましたが(404 Blog Not Found:javascript - String.prototype.quotemeta() があればいいんじゃね?)
こっち( 文字列から正規表現を生成するときのメモ - IT戦記)はid:amachangのやつ



もう

String.prototype.toRegExp = function(){
  try{
    return new RegExp(this.replace(/([^0-9A-Za-z_])/g, '\\$1'));
  }catch(ex){
    return false;
  }
}
var pat = 'hoge';
var str = 'hogefuga';
if(str.match(pat.toRegExp())){
  alert('match');
}

こんな風にすればよくね?

一歩進んで

っていうか,いっそ

//native codeを退避
String.prototype._match = String.prototype.match
//作り直し
String.prototype.match = function(regexp){
    if(typeof regexp == 'string'){
	return this._match(regexp.toRegExp());
    }else{
	return this._match(regexp);
    }
}

こんな風にすればよくね?

**って
していいわけないべ

って

str.match(/元気/)ってのがアウトかとおもたけど,よく考えたら/aa/は正規表現リテラル=objectだからいいんだ.もんだいないお!