Skip to content

Instantly share code, notes, and snippets.

@cyokodog
Last active December 11, 2015 11:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cyokodog/4594057 to your computer and use it in GitHub Desktop.
Save cyokodog/4594057 to your computer and use it in GitHub Desktop.
正規表現の予約語文字列をエスケープしたり、ワイルドカード検索文字列にエスケープする jQuery プラグイン。

jQuery RegExp

正規表現の予約語文字列をエスケープしたり、ワイルドカード検索文字列にエスケープする jQuery プラグイン。

使い方

//正規表現の予約語をエスケープ
var v1 = $.regexp.escapeSource( $('input').val() );

//ワイルドカード検索用のエスケープ
var v2 = $.regexp.wildcardMatchEscapeSource( $('input').val() );

//^ と $ の付加は利用者側が必要に応じて
var v2 = '^' + v2 + '$';

デフォルト値を変更してエスケープする予約語を限定する。

//ユーザに * + ? を利用した正規表現検索を許可する
$.regexp.defaults.esc_str = '\\,^,$,.,(,),|,{,},[,]';

インスタンス毎にエスケープする予約語を設定する。

//インスタンスの生成
var r = $.regexp({
	esc_str : '\\,^,$,.,(,),|,{,},[,]'
});

//エスケープの実行
var v = r.escapeSource( $('input').val() );
;(function($){
var f = $.regexp = function(option){
if(!(this instanceof f)) return new f(option);
var o = this,c = o.config = $.extend({},f.defaults,option);
};
$.extend(f,$.extend(f.prototype,{
_getInstance : function(target){
return target instanceof f ? target : f()
},
escapeSource : function(source){
var o = f._getInstance(this),c = o.config;
$.each(c.esc_str.split(','),function(){
var esc_s = '\\' + this;
source = source.replace(new RegExp(esc_s,'g'),esc_s);
});
return source;
},
wildcardMatchEscapeSource : function(source){
var o = f._getInstance(this), c = o.config;
return o.escapeSource(source).replace(/\\\*/g,'.*');
}
}));
f.defaults = {
esc_str : '\\,^,$,*,+,?,.,(,),|,{,},[,]'
};
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment