übergeben von Variablen in regulären Ausdruck in javascript-string-match
Nehme an, ich muss die Verwendung von string-match in javascript um ein Ergebnis zu bekommen entspricht dem LIKE-operator.
WHERE "str1" LIKE '%str2%';
Den unter match-Ausdruck funktioniert.
var str1="abcd/pqrst";
var str2 = "pqr";
if(str1.match(/^.*pqr.*/)){ //do something};
Aber ich brauche zu übergeben, sondern eine variable pqr, so etwas wie die unter Anweisung.Bitte helfen Sie.
//Wrong
var re = new RegExp("/^.*"+ str2 + ".*/");
if(str1.match(re){ //do something}
- Also, funktioniert das?
- Das funktioniert nicht : var re = new RegExp("/^.*"+ str2 + ".*/"); if(str1.match(re){ //Mach irgendwas}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ein kleines jsFiddle zum ausprobieren
http://jsfiddle.net/jaschahal/kStTc/
Mehr details hier
http://www.w3schools.com/jsref/jsref_obj_regexp.asp
Können Sie auch verwenden, enthält()/indexOf () - Funktionen für diese einfache überprüfungen
Ersten, kann es sinnvoll sein, mit
RegExp.test
. Zweitens, die Schaffung einesRegExp
Objekt, sollten Sie nicht verwendenRegExp
literalen Zeichen ('/').So ist Ihr code:
Dritte, die
RegExp
(/^pqr.*/
) testenfalse
fürstr1
. Das entsprichtWHERE "str1" LIKE '%str2%';
ist so einfach wieRegExp(str2,'i').test(str1)
(Hinweis: diei
modifier (groß-und Kleinschreibung test)), oder auch nur~str.indexOf(str2)
(siehe @Jeff Bowmans Antwort).Wenn alles, was Sie tun müssen, ist zu bestätigen, dass eine Zeichenfolge Auftritt, die in der Mitte eine andere Zeichenfolge verwenden
str1.indexOf(str2) >= 0
. In anderen Sprachen entsprichtstr1.contains(str2)
, wenn Javascript-strings fehlt eine enthält Methode.Wenn Sie wollen, zu setzen str2 in der Mitte des regulären Ausdrucks, werden Sie sicher, dass Flucht.
str.indexOf(str2)>-1
oder~str.indexOf(str2)
. AfaikLIKE
auch etwas zurückgibt, wenn die Laufzeit zwischen%
ist zu Beginn/am Ende einer Zeichenfolge.