2013-06-13 39 views
5

私は、オブジェクトの配列で検索するためにJacob Wrightが"array-query"という非常に細かいJavaScriptライブラリを使用しています。文字列を正規表現に変換する

1つの方法は、regex()です。正規表現は、かっこ内にregex(/[^\w\s]/)のように含めることができます。私はちょうどそれがうまくいくことを示したように私は式をハードコード。私は変数に同じ式を置く場合、最初は、このように、動作しません:私はあなたがそれ文字列作り、あなたの正規表現の前後に引用符を入れている

言われた

var reg = "/[^\w\s]/"; 
regex(reg); 

。引用符を削除します。

は、このように

var reg = /[^\w\s]/; 
regex(reg); 

が正常に動作します。

問題正規表現の一部としてテキストボックスからのユーザー入力を受け入れる必要があります。たとえば、ユーザが文字「z」を入力した場合は、/z/に変更する必要があります。 /z/と入力してもtextbox.valueにはvar reg = "/z/"と同じ問題があります。私がvar reg = /z/; regex(reg);をハードコードすると正常に動作します。

"z"の入力テキストボックス値をvar reg = z;の形式にする方法はありますか。 多くの多くのご協力ありがとうございました。

+3

:http://stackoverflow.com/questions/874709/converting-user-input-string-to-regular-expression – mzedeler

+0

前に頼まれて、このよう、mzedelerが投稿したリンクを見てください。また、JavaScriptの正規表現に関するドキュメント(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)を読むことをお勧めします。 –

答えて

4

あなたは

var regex = new RegExp('your regex string'); 

を行う必要があり、基本的に、あなたはでそれについての詳細を読む

var regex = new RegExp(pattern,modifiers); 

として

var regex = /pattern/modifiers; 

と考えることができます:MDNまたはw3schools

-3

あなたはこのような何かを行うことができます。ここでは

var string = $('#input_id').val(); 
string = string.replace('/', ''); 

var regexpPattern = '/'+string+'/'; 
regex(regexpPattern); 
+2

'regex'は文字列ではなくRegExpオブジェクトを要求します。 –

+1

それは非常に間違っています。 ''/foo/''は文字列ですが、 '/ foo /'は正規表現のリテラルです。 OPは、その質問で、あなたはそれを読んでいると言いましたか? –

+0

二重引用符は含まれていません。私は入力ボックスを介してキャプチャされたテキストとスラッシュを連結しているだけです。私のコードを注意深く読んだことがありますか? – skparwal