La fonction indiquée dans une autre réponse est insuffisante. Elle ne permet pas d'échapper à ^
o $
(début et fin de la chaîne), ou -
qui, dans un groupe de caractères, est utilisé pour les plages.
Utilisez cette fonction :
function escapeRegex(string) {
return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}
Même si cela peut sembler inutile à première vue, s'échapper -
(ainsi que ^
) rend la fonction appropriée pour l'échappement des caractères à insérer dans une classe de caractères ainsi que dans le corps de la regex.
Échapper à /
rend la fonction appropriée pour l'échappement des caractères à utiliser dans un littéral de regex JavaScript pour une évaluation ultérieure.
Comme il n'y a aucun inconvénient à échapper à l'un ou l'autre, il est logique d'échapper pour couvrir des cas d'utilisation plus larges.
Et oui, c'est un défaut décevant que cela ne fasse pas partie du JavaScript standard.
19 votes
Je voulais juste vous informer que
RegExp.escape
est actuellement en cours de réalisation et toute personne qui pense avoir une contribution précieuse est la bienvenue. core-js et d'autres polyfills l'offrent.8 votes
Selon le mise à jour récente de cette réponse cette proposition a été rejetée : Voir le numéro
1 votes
Oui, je crois que @BenjaminGruenbaum est peut-être celui qui a fait la proposition. J'ai essayé d'obtenir des exemples de code plus le module npm es-shim dans une réponse sur stack overflow ici : [ stackoverflow.com/a/63838890/5979634 ] car la proposition a finalement été, malheureusement, rejetée. J'espère qu'ils changeront d'avis ou que quelqu'un mettra en place des "balises de modèle" avant que je prenne ma retraite.