JavaScript : La fonction RegExp.escape existe-t-elle ?
P粉381463780
P粉381463780 2023-11-16 17:41:27
0
2
819

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粉381463780
P粉381463780

répondre à tous(2)
P粉662089521

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粉734486718

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.

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal