Maison  >  Questions et réponses  >  le corps du texte

JavaScript : La fonction RegExp.escape existe-t-elle ?

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粉381463780P粉381463780338 Il y a quelques jours746

répondre à tous(2)je répondrai

  • P粉662089521

    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 !

    répondre
    0
  • P粉734486718

    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.

    répondre
    0
  • Annulerrépondre