Maison > Questions et réponses > le corps du texte
Je veux juste créer une expression régulière avec n'importe quelle chaîne possible.
var usersString = "Hello?!*`~World()[]"; var expression = new RegExp(RegExp.escape(usersString)) var matches = "Hello".match(expression);
Existe-t-il une méthode intégrée ? Sinon, qu’utilisent les gens ? Ruby a RegExp.escape
. J'ai l'impression que je n'ai pas besoin d'écrire le mien, il doit y avoir une norme.
P粉6620895212023-11-17 17:07:41
Pour toute personne utilisant Lodash, Depuis la v3.0.0, la fonction _.escapeRegExp est intégrée :
_.escapeRegExp('[lodash](https://lodash.com/)'); // → '\[lodash\]\(https:\/\/lodash\.com\/\)'
Et si vous ne voulez pas avoir besoin de la bibliothèque Lodash complète, vous voudrez peut-être C'est tout !
P粉7344867182023-11-17 14:43:25
La fonctionnalité liée dans l'autre réponse n'est pas suffisante. Il ne peut pas s'échapper ^
或 $
(字符串的开头和结尾)或 -
, ils sont utilisés dans des plages au sein de groupes de caractères. < /p>
Utilisez cette fonctionnalité :
function escapeRegex(string) { return string.replace(/[/\-\^$*+?.()|[\]{}]/g, '\$&'); }
Bien que cela puisse sembler inutile à première vue, l'échappement -
(以及 ^
) rend cette fonction également adaptée aux caractères d'échappement à insérer dans les classes de caractères en tant que corps d'une expression régulière.
Escape /
Rend cette fonction adaptée aux caractères d'échappement à utiliser dans les littéraux d'expression régulière JavaScript pour une évaluation ultérieure.
Comme il n'y a aucun mal à échapper à l'un d'entre eux, il est logique de s'échapper pour couvrir un plus large éventail de cas d'utilisation.
Oui, malheureusement, cela ne fait pas partie du JavaScript standard.