entweichende Fragezeichen in regex javascript
-
23-08-2019 - |
Frage
Dies ist eine einfache Frage, denke ich.
Ich versuche, für das Auftreten einer Zeichenfolge in einer anderen Zeichenfolge mit Regex in JavaScript wie so zu suchen:
var content ="Hi, I like your Apartment. Could we schedule a viewing? My phone number is: ";
var gent = new RegExp("I like your Apartment. Could we schedule a viewing? My", "g");
if(content.search(gent) != -1){
alert('worked');
}
Das funktioniert nicht, weil der ?
Charakter .... Ich versuchte es mit \
zu entkommen, aber das funktioniert auch nicht. Gibt es eine andere Art und Weise ?
wahrsten Sinne des Wortes statt als Sonderzeichen zu verwenden?
Lösung
Sie müssen entkommen sie mit zwei Schrägstriche
\\?
Sehen Sie diese für weitere Informationen:
Andere Tipps
Sie sollten doppelten Schrägstrich verwenden:
var regex = new RegExp("\\?", "g");
Warum? weil in JavaScript ist die \
auch Zeichen in Strings zu entkommen, so: "\?" wird: "?"
Und "\\?"
wird "\?"
Sie können Ihre regexp mit Schrägstrichen anstelle von Zitaten und dann ein einzelner Backslash zu entkommen das Fragezeichen begrenzen. Versuchen Sie folgendes:
var gent = /I like your Apartment. Could we schedule a viewing\?/g;
Wenn Sie eine bekannt Muster (dh Sie keine Variable verwenden, um eine RegExp zu bauen), verwenden Sie wörtliche regex Notation, wo man nur verwenden müssen Einzel Schrägstriche spezielle Regex Metazeichen zu entkommen:
var re = /I like your Apartment\. Could we schedule a viewing\?/g;
^^ ^^
Wenn Sie eine RegExp dynamisch aufbauen müssen, verwenden Sie RegExp
Konstruktor Notation , wo Sie MÜSSEN Doppelschrägstriche für sie einen Backslash bezeichnen :
var questionmark_block = "\\?"; // A literal ?
var initial_subpattern = "I like your Apartment\\. Could we schedule a viewing"; // Note the dot must also be escaped to match a literal dot
var re = new RegExp(initial_subpattern + questionmark_block, "g");
A must-read: RegExp: Beschreibung bei MDN.