2013-06-13 16 views
5

Ich benutze eine sehr feine JavaScript-Bibliothek namens "array-query" von Jacob Wright, um Suchen in Arrays von Objekten zu tun.Konvertiere einen String in einen regulären Ausdruck

Eine Methode ist regex(), in der ein regulärer Ausdruck in Klammern eingeschlossen werden kann: regex(/[^\w\s]/). Wenn ich den Ausdruck fest codiere, wie ich gerade gezeigt habe, funktioniert es gut. Wenn ich den gleichen Ausdruck in einer Variablen an erster Stelle ist es nicht funktioniert, wie folgt aus:

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

mir gesagt wurde

Sie setzen Anführungszeichen um Ihre regex, so dass es eine Zeichenfolge. Entfernen Sie die Anführungszeichen.

So

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

funktioniert gut.

Problem ist, ich muss die Benutzereingabe von einem Textfeld als Teil des regulären Ausdrucks akzeptieren. Wenn der Benutzer beispielsweise den Buchstaben z eingibt, muss er in /z/ geändert werden. Selbst wenn ich /z/ eintippte, hat das textbox.value zurückgegebene das gleiche Problem wie ein var reg = "/z/". Wenn ich var reg = /z/; regex(reg); festcode, funktioniert es gut.

Wie ein Eingangs Textbox Wert von "z" in eine Form zu machen, die var reg = z; ist? Vielen vielen Dank für jede Hilfe oder Ideen, hoffe, das ist nicht zu verwirrend.

+3

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

+0

Das nach wie vor gefragt worden, Sehen Sie sich den Link mzedeler an. Ich empfehle auch, eine Dokumentation über reguläre Ausdrücke in JavaScript zu lesen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions. –

Antwort

4

sollten Sie tun

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

Grundsätzlich kann man sich vorstellen

var regex = /pattern/modifiers; 

als

var regex = new RegExp(pattern,modifiers); 

Lesen Sie mehr darüber unter: MDN oder w3schools

-3

Sie können etwas tun:

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

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

'regex' erwartet ein RegExp-Objekt, keine Zeichenfolge. –

+1

Das ist sehr falsch. '"/foo/"' ist ein String, während '/ foo /' ein Regex-Literal ist. Das OP hat sogar erwähnt, dass Sie es in der Frage gelesen haben? –

+0

Ich habe keine Anführungszeichen. Ich habe nur die Schrägstriche mit dem Text, die über das Eingabefeld erfasst werden. Hast du meinen Code sorgfältig gelesen? – skparwal

Verwandte Themen