Question

Ceci est une simple question, je pense.

Je suis en train de rechercher l'occurrence d'une chaîne dans une autre chaîne en utilisant regex en JavaScript comme ceci:

 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');     
 }          

Cela ne fonctionne pas en raison du caractère ? .... J'ai essayé échapper avec \, mais cela ne fonctionne pas non plus. Y at-il une autre façon d'utiliser ? littéralement au lieu d'un caractère spécial?

Était-ce utile?

La solution

Vous devez échapper avec deux barres obliques

\\?

Voir ce pour plus de détails:

http://www.trans4mind.com/personal_development/ JavaScript / normal% 20Expressions% 20Simple% 20Usage.htm

Autres conseils

Vous devez utiliser une double barre oblique:

var regex = new RegExp("\\?", "g");

Pourquoi? car en JavaScript du \ est également utilisé pour échapper les caractères dans les chaînes, alors: « \? » devient: "?"

Et "\\?", devient "\?"

Vous pouvez délimiter votre regexp avec des barres obliques au lieu de guillemets, puis une seule barre oblique inverse pour échapper à la question de marque. Essayez ceci:

var gent = /I like your Apartment. Could we schedule a viewing\?/g;

Chaque fois que vous avez un connu motif (c.-à-vous de ne pas utiliser une variable pour construire une expression régulière), utilisez littéral notation regex où vous avez besoin d'utiliser unique antislashs pour échapper à métacaractères regex spéciales:

var re = /I like your Apartment\. Could we schedule a viewing\?/g;
                               ^^                            ^^

Chaque fois que vous devez construire un RegExp dynamiquement, utilisez notation constructeur RegExp où vous devez backslashes double pour eux pour désigner un anti-slash :

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 doit lire: RegExp: Description au MDN.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top