• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • L'expression Regex peut être pénible. Eh bien, parfois!

    Découvrons les expressions régulières et leurs modèles. Nous allons examiner de tels modèles qui semblent être une soupe alambiquée de personnages. Nous verrons ce que signifie chaque caractère dans une expression régulière.

    Après avoir lu cet article, vous pourrez créer vos expressions régulières et les utiliser à votre guise. En fin de compte, nous énumérerons également certains des outils de test RegEx en ligne afin que, en fonction des besoins, vous puissiez créer votre RegEx et le tester à l'aide de ces outils.

    Introduction

    Expressions régulières ou comme on l'appelle communément - RegEx est une séquence de caractères qui peut être utilisée comme modèle pour rechercher des caractères ou des chaînes.

    Par exemple, pour déterminer si une chaîne ou une phrase contient le mot "pomme"Nous pouvons utiliser l'expression régulière"/Pomme”Pour rechercher dans la chaîne. Comme autre exemple, nous pouvons utiliser "/[0-9]”Pour vérifier si une chaîne donnée contient un nombre compris entre 0 et 9.

    Expressions régulières et leur utilisation

    Les expressions régulières sont largement utilisées à des fins diverses dans les opérations Web modernes. Validation de formulaires Web, moteurs de recherche Web, analyseurs lexicaux en IDE, les éditeurs de texte et les éditeurs de documents sont parmi quelques exemples où les expressions régulières sont fréquemment utilisées.

    Nous avons tous utilisé "CTRL + F”Plusieurs fois pour rechercher dans un document ou un morceau de code pour trouver un mot particulier, une phrase ou une expression. Cette opération peut être signalée comme un exemple très courant d'utilisation d'expressions régulières.

    Avant d'aller plus loin, jetons un œil à une expression régulière très couramment utilisée.

    Pouvez-vous deviner 🤔 le RegEX ci-dessous à quoi sert-il?

    ^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$

    Ne vous inquiétez pas si vous ne pouvez pas le deviner. Je suis sûr que vous seriez capable de deviner à la fin de cet article.

    Commençons par A, B, C de RegEx.

    Tokens

    Pour commencer, examinons les différents symboles de l'expression régulière illustrés ci-dessus.

    ^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$

    Si nous regardons l'expression régulière donnée ci-dessus, nous pouvons voir qu'elle est composée de nombreux symboles ou caractères ou jetons. Découvrons ce qu'ils signifient:

    Jeton

    Sens

    ^

    Ce jeton indique le début d'une chaîne.

    (...)

    Cela dénote un groupe où tout ce qui est donné à l'intérieur (…) est capturé.

    [...]

    Le [] renferme des caractères dont n'importe lequel peut être mis en correspondance. Par exemple - [abc] correspondra à a ou b ou c.

    AZ

    L'ensemble des minuscule alphabets de a à z. Nous devons garder à l'esprit que Regex est sensible à la casse.

    A-Z

    L'ensemble des majuscule caractères de A à Z.

    0-9

    Les chiffres de 0 à 9.

    _

    Cela correspondra au caractère _.

    \

    C'est le caractère d'échappement.

    \.

    Cela correspond au caractère "." au sens propre. Ceci est utilisé parce que le symbole "." dans regex est un jeton en lui-même qui correspond à n'importe quel caractère

    +

    Ceci est un quantificateur. Cela correspond à un ou plusieurs caractères avec lesquels il est utilisé. Par exemple, un + signifie une ou plusieurs occurrences du caractère a.

    \-

    Cela correspondra au caractère «-».

    @

    Cela correspondra au caractère «@».

    {}

    Ceci est un autre quantificateur. Il est utilisé pour indiquer le nombre d'occurrences d'un caractère. Par exemple, un {3} signifie exactement 3 a.

    $

    Cela indique la fin d'une chaîne.

    Décomposition du modèle Regex donné

    Maintenant, armés de cette connaissance préliminaire des jetons, essayons de décoder l'expression régulière ci-dessus:

    • <small><span style="color: #ff0000;"><span style="color: #000000;">^([a-zA-Z0-9_\-\.]+)</span></span></small> signifie que nous recherchons une chaîne commençant par au moins un ou plusieurs caractères alphanumériques majuscules ou minuscules, traits de soulignement, traits d'union ou points. Par exemple, tout ce qui ressemble à nom_utilisateur.01 correspondra au modèle. Nous devons nous rappeler qu'ici, il n'est pas nécessaire d'inclure tous les symboles, mais un seul caractère dans [a-zA-Z0-9_\-\.] ça ira.
    • Le @ le caractère correspond à une seule occurrence de @. Ajout à l'exemple précédent, quelque chose comme [email protected] fera l'affaire.
    • ([a-zA-Z0-9_\-\.]+)  est similaire au premier point. Cela signifie également que nous recherchons une chaîne contenant au moins un ou plusieurs caractères alphanumériques, traits de soulignement, traits d'union ou points. Ajout à l'exemple, [email protected] ira ici.
    • Comme vous l'avez peut-être déjà deviné, nous faisons allusion à un modèle d'e-mail. Passant, \. correspond au single "." personnage. Si nous continuons avec l'exemple en cours, quelque chose comme [email protected]
    • ([a-zA-Z]{2,5})$ cela signifie que la chaîne doit se terminer par 2 à 5 caractères alphabétiques en majuscules ou en minuscules. Si nous ajoutons .com à l'exemple précédent, nous pouvons obtenir [email protected], qui est le modèle courant d'une chaîne d'e-mail.

    En combinant tout ce qui précède, nous pouvons voir que nous recherchons une chaîne d'identification de courrier électronique. Nous pouvons maintenant utiliser cette expression pour valider n'importe quel identifiant de messagerie. Si notre identifiant de messagerie de test correspond à ce modèle, nous pouvons dire qu'il s'agit d'un identifiant de messagerie valide.

    PS. - Il s'agit d'un modèle pour les identifiants de messagerie les plus courants sur le Web.

    Types de jetons

    De nombreux jetons peuvent être utilisés dans diverses combinaisons dans un Regex pour décrire une grande variété d'expressions. Ci-dessous, nous allons jeter un coup d'œil aux différents types de jetons utilisés dans les expressions régulières. En outre, nous allons également examiner les jetons les plus couramment utilisés dans chaque catégorie.

    Jetons de base

    Commençons par les jetons de base. Ces jetons sont utilisés avec presque toutes les expressions régulières. Par conséquent, nous devons d'abord en apprendre davantage.

    Jeton

    Sens

    \r

    Cela correspond au caractère de retour chariot.

    \0

    Il correspond au caractère nul.

    \n

    Cela cherche une nouvelle ligne.

    \t

    Cela correspond à un onglet.

    Classes de personnages

    Passons à autre chose, regardons les jetons de personnage. Ils sont utilisés pour faire correspondre les alphabets, les nombres et autres caractères spéciaux.

    Jeton

    Sens

    a

    Cela correspond littéralement au caractère a. De même, tous les alphabets et nombres utilisés isolément recherchent le caractère spécifique lui-même.

    abc

    Il correspond à la chaîne abc.

    [abc]

    Cela recherche un seul caractère parmi a, b ou c.

    [^ abc]

    Cela correspond à n'importe quel caractère sauf a, b ou c.

    [az]

    Un caractère minuscule dans la plage de a à z

    [^ az]

    Tout caractère non compris entre a et z. Cela inclut également les caractères majuscules.

    [AZ]

    Un caractère majuscule entre A et Z.

    [^ AZ]

    Un caractère pas entre A et Z.

    [0-9]

    Tout nombre compris entre 0 et 9

    [^ 0-9]

    Un caractère non compris entre 0 et 9

    [a-zA-Z0-9]

    Cela correspond à un caractère qui peut être un caractère minuscule entre a et z or tout caractère entre A et Z or tout nombre entre 0 et 9

    [^ a-zA-Z0-9]

    Tout personnage qui ne rentre pas dans la catégorie précédente.

    .

    Tout caractère unique

    \s

    Ceci est utilisé pour rechercher n'importe quel caractère d'espacement.

    \S

    Ceci est utilisé pour rechercher tout caractère non blanc.

    \d

    Cela correspond à n'importe quel chiffre

    \D

    Cela correspond à tout non-chiffre

    \w

    Il correspond à n'importe quel caractère de mot

    \W

    Il correspond à n'importe quel caractère autre qu'un mot

    $

    Ceci indique la fin d'une chaîne

    \b

    Cela correspond à une limite de mot

    \B

    Ceci est utilisé pour faire correspondre une limite non-mot

    Quantificateurs

    Cette classe spéciale de jetons est utilisée pour faire correspondre le nombre d'occurrences consécutives d'un caractère ou d'une chaîne ou d'un nombre. Ils sont utilisés en conjonction avec les autres jetons.

    Regardons quelques quantificateurs courants.

    Tokens

    Sens

    a?

    Cela correspond à zéro ou une occurrence de a.

    a*

    Cela correspond à zéro ou plusieurs occurrences (consécutives) de a.

    a+

    Ceci concerne au moins une ou plusieurs occurrences consécutives de a.

    a {5}

    Cela recherche exactement cinq occurrences consécutives de la lettre a.

    a {5,}

    Ceci concerne au moins cinq occurrences consécutives ou plus de a.

    a {5, 7}

    Cela recherche n'importe quel nombre de a consécutifs entre 5 et 7.

    Groupes

    Ces jetons correspondront en groupes comme son nom l'indique.

    Tokens

    Sens

    (...)

    Cela capture tout ce qui est entre parenthèses.

    (a | b)

    Cela correspond à a ou b.

    (?:…)

    Correspond à tout ce qui est entre parenthèses

    (? (1) oui | non)

    Cela correspond à une instruction conditionnelle.

    Drapeaux

    Ce sont des instructions spéciales données au moteur de correspondance de motifs lors de la recherche d'une correspondance.

    Tokens Sens

    g

    Match global. Cela cherchera jusqu'à ce que le moteur de correspondance ne trouve plus de correspondance, c'est-à-dire jusqu'à la fin de la chaîne ou du groupe de chaînes donné.

    m

    Correspondance multiligne ie, ligne par ligne.

    x

    Indique au moteur d'ignorer les espaces lors de la correspondance.

    X

    Ceci est utilisé pour la correspondance étendue.

     s

    Cela correspond à une seule ligne.

     i

    Ceci est utilisé pour la correspondance insensible à la casse.

     u

    Pour les caractères Unicode.

    Ancres

    Instructions supplémentaires pour le moteur concernant les positions.

    Tokens

    Sens

    ^

    Cela dénote le début d'une chaîne

    \A

    Cela indique également le début d'une chaîne

    \Z

    Le jeton pour la fin d'une chaîne.

    \z

    Le jeton pour la fin absolue d'une chaîne.

     \G

    C'est pour le début d'un match.

    Expressions régulières couramment utilisées

    Les expressions régulières sont largement utilisées sur Internet. Des validations de formulaire à la recherche de données contenant un ou plusieurs mots clés particuliers, les expressions régulières sont presque indissociables des applications informatiques modernes.

    Regardons quelques exemples familiers d'utilisation d'expressions régulières.

    Faire correspondre un numéro de téléphone

    Voyons quel est le modèle d'un numéro de téléphone utilisé en Inde. Le code de pays vient en premier. Il contient généralement un caractère «+» suivi du nombre 91, qui est le code de pays de l'Inde. En outre, les numéros de téléphone indiens commencent généralement par 6, 7, 8 ou 9. Ils sont ensuite suivis de 9 autres chiffres.

    Donc, une expression régulière valide pour un numéro de téléphone cellulaire indien serait comme donnée.

    ^(\+91[\-\s]?)?[0]?(91)?[6-9]\d{9}$

    Tester la force des mots de passe

    La plupart des sites Web nous recommandent de fournir une Mot de passe qui contient une combinaison de chiffres, de caractères majuscules et minuscules et de symboles. En outre, il doit y avoir un nombre minimum de caractères - 6 ou 8. Ceci est fait pour que le mot de passe devienne très difficile à déchiffrer.

    Tout mot de passe suivant cette règle peut être généré ou validé pour la force du mot de passe à l'aide d'une expression régulière.

    ^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})

    Correspondance d'URL

    Les URL sont le moyen le plus courant d'utiliser Internet et de visiter rapidement la page Web souhaitée. Presque tous les sites Web ont une URL. Par conséquent, chaque URL est standardisée et suit un modèle défini. Chaque URL suit le protocole HTTP ou HTTPs suivi de ":/ /"Et le"www" souvent. Puis le nom du site Web suivi d'un .com ou .net ou .org etc.

    Pour tester la validité d'une URL, nous pouvons utiliser une regex comme celle donnée ci-dessous.

    https?:\/\/(www\.)?[[email protected]:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)

    Formats de date et d'heure

    Les formats de date et d'heure sont également très couramment utilisés sur le Web. Il existe de nombreux formats de dates utilisés par une variété d'applications ou de logiciels ou de systèmes. Les dates doivent toujours être utilisées dans un format qui le rend utilisable par l'utilisateur ou l'application qui tente de les lire.

    Une date au format jj-MM-aaaa peut être validée en utilisant une expression régulière qui peut être comme indiqué ci-dessous.

    ^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$

    Maintenant, explorons certains des outils RegEx en ligne ce qui peut être pratique à construire et à dépanner.

    Si vous souhaitez en savoir plus sur les expressions régulières, leurs exemples et leurs utilisations avancées, voici une liste de sites Web auxquels vous pouvez toujours vous référer:

    Regex101

    RegEx101

    Regex101 est un excellent guide de référence et un outil interactif pour créer vos expressions régulières, il peut vous aider à démarrer très rapidement avec regex.

    En utilisant cela, nous pouvons tester RegEx pour les langues ci-dessous.

    • PCRE (PHP)
    • ECMAScript (JavaScript)
    • Python
    • GoLang

    Il prend en charge les fonctionnalités RegEx comme une correspondance, une substitution et des tests unitaires. En dehors de celui-ci, on peut enregistrer l'ancien RegEx testé.

    FreeFormatter

    Testeur FreeFormater RegEx

    Formateur libre est basé sur JavaScript et utilise le Bibliothèque XRegExp pour des fonctionnalités améliorées. Il facilite le test d'un RegEx contre un match ainsi que le remplacement d'un match. Il prend en charge les indicateurs ci-dessous, qui peuvent être utilisés en fonction des besoins lors du test d'un RegEx

    • i - Insensible à la casse
    • m - Multiligne
    • g - Global (ne vous arrêtez pas au premier match)
    • s - Le point correspond à tous les sauts de ligne INCLUANTS (XRegExp uniquement).

    Regex Crossword

    RegExCrosswood

    Si Regex et énigmes vous intéressent, c'est le site Web aller à. Il propose une série de puzzles amusants et interactifs. Ils vous aideront certainement à en savoir plus sur les expressions régulières.

    • Optimisé pour les téléphones et résoudre les énigmes RegEx en déplacement.
    • Un tutoriel étape par étape, vous apprenant les différents symboles et modèles RegEx.
    • Pliez votre esprit autour d'énigmes cubistes 2D palindrome RegEx.
    • Large gamme de puzzles RegEx avec des difficultés du débutant à l'expert.

    RegExr

    RegExr

    RegExr est un site Web pour se salir les mains avec Regex. Vous pouvez écrire des regex, faire correspondre des modèles et vous amuser avec cet équivalent Codepen pour les expressions régulières.

    Fonctionnalités

    • Prend en charge JavaScript et PHP / PCRE RegEx.
    • Les résultats sont mis à jour en temps réel au fur et à mesure que vous tapez.
    • Survolez une correspondance ou une expression pour plus de détails.
    • Validez les modèles avec des suites de tests.
    • Enregistrez et partagez des expressions avec d'autres.
    • Référence RegEx complète avec aide et exemples.

    Pythex

    Il s'agit d'un testeur d'expressions régulières basé sur Python. Pythex est un moyen rapide de tester vos expressions régulières Python. Il est livré avec quatre drapeaux à savoir

    • Ignorer la casse
    • Multiligne
    • PointTous
    • Verbeux

    Rubular

    Rubulaire

    Rubulaire est un éditeur d'expressions régulières basé sur Ruby. Il prend en charge et utilise le Ruby 2.5.7 version ultérieure.

    Debuggex

    Debuggex

    Il est basé sur JavaScript et prend en charge RegEx pour Python et les expressions régulières compatibles Perl (PCRE). Utiliser ceci outil en ligne nous pouvons intégrer notre RegEx à StackOverflow. Il permet de partager le résultat RegEx en créant un lien unique pour chaque test RegEx.

    ExtendsClass

    Étend la classe

    Étend la classe est une boîte à outils pour les développeurs. Il fournit un support de test RegEx pour les langues ci-dessous.

    • JavaScript
    • Python (3.4)
    • Ruby (2.1)
    • Java (JDK 14)
    • PHP (7)

    RegEx Tester

    Testeur RegEx

    Cette testeur d'expression régulière gratuit vous permet de tester vos expressions régulières par rapport à n'importe quelle entrée de votre choix et met clairement en évidence toutes les correspondances. En utilisant cela, nous pouvons enregistrer l'ancien RegEx testé pour référence future. De plus, il prend en charge JavaScript et PCRE RegEx.

    Web ToolKit

    WebToolKitOnline RegExTester

    Boîte à outils Web contient un ensemble d'outils utilitaires, le testeur RegEx est l'un d'entre eux. Nous pouvons entrer notre RegEx ici et le tester par rapport à une valeur. Il fournit également une fonction de remplacement, de mise en correspondance et de copie des expressions. En dehors de cela, il fournit une bascule pour effectuer une correspondance globale et sensible à la casse.

    Conclusion

    Nous avons appris les expressions régulières, quelques exemples courants et certains des outils de test en ligne. Avec cette connaissance, nous pouvons créer notre expressions régulières et utilisez-les dans nos applications.