/ / PHP (regex) - qu'est-ce que c'est? Exemples d'expressions régulières et validation

PHP (regex) - qu'est-ce que c'est? Exemples d'expressions régulières et validation

Lorsque vous travaillez avec des textes dans n'importe quelle langue moderneles développeurs de programmation sont constamment confrontés aux tâches de vérification des données saisies pour la conformité avec le modèle souhaité, de recherche et de remplacement des fragments de test et d'autres opérations typiques de traitement des informations symboliques. Le développement de vos propres algorithmes de vérification entraîne une perte de temps, une incompatibilité du code du programme et une complexité dans son développement et sa modernisation.

Développement rapide d'Internet et des langages de développement WEBexigeait la création de moyens universels et compacts de traitement des informations textuelles avec le minimum de code requis à cet effet. Le langage PHP, qui est populaire parmi les débutants et les développeurs professionnels, ne fait pas exception. L'expression régulière en tant que langage de modèle de texte permet de simplifier les tâches de traitement de texte et de réduire le code du programme de dizaines ou de centaines de lignes. De nombreuses tâches ne peuvent pas du tout être résolues sans cela.

php regex

Expressions régulières en PHP

Le langage PHP contient trois mécanismes pour travailler avecles expressions régulières sont "ereg", "mb_ereg" et "preg". La plus courante est l'interface "preg", dont les fonctions permettent d'accéder à la bibliothèque de regex PCRE, développée à l'origine pour le langage Perl, qui est incluse avec PHP. Les fonctions Preg recherchent des correspondances dans une chaîne de texte donnée, selon un certain modèle dans le langage des expressions régulières.

Notions de base sur la syntaxe

exemples d'expressions régulières

Dans un court article, il est impossible de détaillerdécrire toute la syntaxe des expressions régulières, il existe une littérature spéciale pour cela. Nous ne donnerons que les éléments de base pour montrer les larges possibilités pour le développeur et comprendre les exemples de code.

En PHP, l'expression régulière est formellement définietrès difficile, et par conséquent nous simplifierons la description. L'expression régulière est une chaîne de texte. Il se compose d'un modèle délimité et d'un modificateur qui spécifie comment le gérer. Il est possible d'inclure diverses alternatives et répétitions dans les modèles.

Par exemple, dans l'expression / d {3} -d {2} -d {2} / m le séparateur sera "/", suivi du motif et du symbole "M" sera un modificateur.

Toute la puissance des expressions régulières est encodée avecen utilisant des métacaractères. Le métacaractère principal de la langue est une barre oblique inverse - "". Il change le type du caractère suivant en caractère opposé (c'est-à-dire qu'un caractère ordinaire devient un métacaractère et vice versa). Un autre métacaractère important est la barre oblique "|", qui spécifie des alternatives au modèle. Plus d'exemples de métacaractères:

^Début d'un objet ou d'une ligne
(Début du sous-modèle
)Fin du sous-modèle
{Démarrage du quantificateur
}Fin du quantificateur
chiffre décimal de 0 à 9
Dtout caractère non numérique
avecvide, espace, tabulation
àsymbole de vocabulaire

PHP traite l'espace comme un caractère significatif distinct lors du traitement d'expressions régulières, donc les expressions ABCGDE et ABC WHERE sont différentes.

Sous-modèles

En PHP, les sous-modèles réguliers sont entre parenthèses et sont parfois appelés «sous-expressions». Ils remplissent les fonctions suivantes:

  1. Mettre en évidence les alternatives... Par exemple, le modèle chaleur (certains | oiseau |) correspond aux mots "Chaleur", "oiseau de feu" et "rôti"... Et sans parenthèses, ce sera juste une chaîne vide, «oiseau» et «rôti».

  2. Un sous-modèle "excitant". Cela signifie que si une sous-chaîne correspond au modèle, toutes les correspondances sont renvoyées en tant que résultat. Pour plus de clarté, nous allons donner un exemple. Compte tenu de l'expression régulière suivante: le gagnant reçoit ((or | plaqué or) (médaille | coupe)) - et une chaîne pour rechercher des correspondances: "Le gagnant reçoit une médaille d'or"... En plus de la phrase d'origine, la recherche renverra: "Médaille d'or", "Médaille", "or".

Opérateurs de répétition (quadrificateurs)

Lors de l'écriture d'expressions régulières, il est très courantil est nécessaire d'analyser les répétitions de nombres et de symboles. Ce n'est pas un problème s'il n'y a pas beaucoup de répétitions. Mais que faire si nous ne connaissons pas leur nombre exact? Dans ce cas, vous devez utiliser des métacaractères spéciaux.

Pour décrire les répétitions, des quadrificateurs sont utilisés - des métacaractères pour spécifier le nombre. Les quadrificateurs sont de deux types:

  • général, entre parenthèses;
  • abrégé.

Le quantificateur commun touche le minimum etle nombre maximum de répétitions autorisées d'un élément sous la forme de deux nombres entre accolades, par exemple: x {2,5}. Si le nombre maximum de répétitions est inconnu, le deuxième argument est omis: x {2,}.

Les quantificateurs abrégés sont des symboles pour les répétitions les plus courantes afin d'éviter une surcharge syntaxique inutile. Trois abréviations sont couramment utilisées:

1. * - zéro ou plusieurs répétitions, ce qui équivaut à {0,}.

2. + - une ou plusieurs répétitions, c'est-à-dire {1,}.

3.? - zéro ou une seule répétition - {0,1}.

Exemples d'expressions régulières

Pour ceux qui apprennent les expressions régulières,les exemples sont le meilleur tutoriel. Nous en présenterons quelques-uns qui montrent leurs vastes capacités avec un minimum d'effort. Tous les codes de programme sont entièrement compatibles avec PHP 4.x et les versions supérieures. Pour une compréhension complète de la syntaxe et l'utilisation de toutes les fonctionnalités du langage, nous vous recommandons le livre de J. Friedl "Regular Expressions", qui examine complètement la syntaxe et fournit des exemples d'expressions régulières non seulement en PHP, mais aussi pour le langages Python, Perl, MySQL, Java, Ruby et C #.

Vérification de l'exactitude de l'adresse e-mail

Une tâche. Il y a une page Web oùl'adresse e-mail du visiteur est demandée. L'expression régulière doit vérifier la validité de l'adresse reçue avant d'envoyer des messages. La vérification ne garantit pas que la boîte aux lettres spécifiée existe réellement et accepte les lettres. Mais il peut éliminer les adresses délibérément incorrectes.

Solution. Comme avec n'importe quel langage de programmation, en PHPLes expressions régulières de validation d'adresse e-mail peuvent être implémentées de différentes manières, et les exemples de cet article ne sont pas la dernière et unique option. Par conséquent, dans chaque cas, nous fournirons une liste d'exigences à prendre en compte lors de la programmation, et l'implémentation spécifique est entièrement à la discrétion du développeur.

Ainsi, l'expression de validation de courrier électronique doit vérifier les conditions suivantes:

  1. La présence du symbole @ dans la chaîne d'origine et l'absence d'espaces.
  2. La partie domaine de l'adresse, suivie du symbole @, ne contient que des caractères valides pour les noms de domaine. La même chose s'applique au nom d'utilisateur.
  3. Lors de la vérification du nom d'utilisateur, vous devezdétecter la présence de caractères spéciaux tels que l'apostrophe ou la barre verticale. De tels caractères sont potentiellement dangereux et peuvent être contenus dans des attaques telles que l'injection SQL. Évitez de telles adresses.
  4. Les noms d'utilisateur n'acceptent qu'un point, qui ne peut pas être le premier ou le dernier caractère d'une ligne.
  5. Le nom de domaine doit contenir au moins deux et pas plus de six caractères.

Un exemple qui prend en compte toutes ces conditions peut être vu dans la figure ci-dessous.

e-mail d'expressions régulières php

Validation des URL

Une tâche. Vérifiez si la chaîne de texte donnée est une URL valide. Notez à nouveau que les expressions régulières de validation d'URL peuvent être implémentées de différentes manières.

Solution. Notre version finale ressemble à ceci:

/^(https?://)?((da-z.->+).((az.††····················· * / ? $ /

Analysons maintenant ses composants plus en détail à l'aide de l'image.

expressions régulières d'URL

objet 1Il ne doit y avoir aucun caractère devant l'URL
élément 2Vérification du préfixe "http" obligatoire
élément 3Il ne devrait y avoir aucun symbole
élément 4Si "s" est présent, l'URL indique une connexion sécurisée "https"
p. 5Fragment obligatoire "//"
point 6Pas de symboles
p. 7-9Vérification de la validité du domaine de premier niveau et de la présence d'un point
p.10-13Vérification de l'orthographe du domaine de deuxième niveau et de la période
p. 14-17

Structure de fichier d'une URL - un ensemble de chiffres, de lettres, de traits de soulignement, de traits d'union, de points et d'une barre oblique de fin

Vérification des numéros de carte de crédit

Une tâche. Il est nécessaire de vérifier l'exactitude du numéro de carte plastique saisi des systèmes de paiement les plus courants. L'option n'est envisagée que pour les cartes Visa et MasterCard.

Solution. Lors de la création d'une expression, tenez compte deprésence possible d'espaces dans le numéro saisi. Les numéros sur la carte sont divisés en groupes pour faciliter la lecture et la dictée. Par conséquent, il n'est que naturel pour une personne d'essayer d'entrer un nombre de cette façon (c'est-à-dire en utilisant des espaces).

Ecrire une expression générique qui prend en compteles espaces et les tirets possibles est plus difficile que de simplement supprimer tous les caractères à l'exception des nombres. Par conséquent, il est recommandé d'utiliser le métacaractère / D dans l'expression, qui supprime tous les caractères à l'exception des nombres.

Vous pouvez maintenant accéder directement àvérifier le numéro. Toutes les sociétés de cartes de crédit utilisent un format de numéro unique. L'exemple l'utilise et le client n'a pas besoin de saisir le nom de l'entreprise - il est identifié par le numéro. Les cartes Visa commencent toujours par 4 et comportent 13 ou 16 chiffres. MasterCard commence dans la plage 51-55 avec une longueur de nombre de 16. Par conséquent, nous obtenons l'expression suivante:

exemples d'expressions régulières

Avant de traiter la commande, vous pouvez en outre vérifier le dernier chiffre du numéro, qui est calculé à l'aide de l'algorithme Luna.

Vérification des numéros de téléphone

Une tâche. Vérification de l'exactitude du numéro de téléphone saisi.

Solution. Nombre de chiffres sur les téléphones fixes et mobilesles numéros de téléphone varient considérablement d'un pays à l'autre, il est donc impossible de vérifier universellement un numéro de téléphone à l'aide d'expressions régulières pour en vérifier l'exactitude. Mais les numéros internationaux ont un format strict et sont parfaits pour la vérification des modèles. De plus, de plus en plus d'opérateurs téléphoniques nationaux tentent de se conformer à une norme unique. La structure du problème est la suivante:

+ CCC.NNNNNNNNNNxEEEE, où:

- C est un code de pays de 1 à 3 chiffres.

- N - numéro jusqu'à 14 chiffres.

- E est une extension facultative.

Le plus est obligatoire et le x n'est présent que lorsqu'une extension est requise.

En conséquence, nous avons l'expression suivante:

^ + [0-9] {1,3}. [0-9] {4,14} (?: X. +)? $

Numéros de la plage

Une tâche. Vous devez vous assurer qu'un entier d'une plage spécifiée correspond. En outre, il est nécessaire que les expressions régulières ne trouvent que les nombres d'une plage de valeurs.

Décision. Voici quelques expressions pour plusieurs des cas les plus courants:

Déterminez l'heure de 1 à 24^ (1 [0-2] | [1-9]) $
Jour dans le mois 1-31^ (3 [01] | [12] [0-9] | [1-9]) $
Seconde ou minute 0-59^ [1-5]? [0-9] $
Un nombre de 1 à 100^ (100 | [1-9]? [0-9]) $
Jour de l'année 1 - 366^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} | [1-9] [0-9]?) $

Trouver une adresse IP

Une tâche. Vous devez déterminer si la chaîne spécifiée est une adresse IP IPv4 valide comprise entre 000.000.000.000 et 255.255.255.255.

Solution. Comme pour toute tâche en PHP, il existe de nombreuses variantes d'une expression régulière. Par exemple, ceci:

espace d'expressions régulières

Vérification d'expression en ligne

email regex

Vérifier l'exactitude des expressions régulières pourLes programmeurs novices peuvent être difficiles en raison de la complexité de la syntaxe, qui diffère des langages de programmation «normaux». Pour résoudre ce problème, il existe de nombreux testeurs d'expression en ligne qui vous permettent de vérifier facilement l'exactitude du modèle créé sur du texte réel. Le programmeur entre une expression et des données pour vérification et voit instantanément le résultat du traitement. Habituellement, il existe également une section de référence, qui décrit en détail les expressions régulières, des exemples et des différences d'implémentation pour les langages de programmation les plus courants.

Mais faites entièrement confiance aux résultats des services en lignenon recommandé pour tous les développeurs PHP. Une expression régulière, écrite et testée personnellement, est à jour et garantie sans erreur.

J'ai aimé:
0
Messages populaires
Développement spirituel
Nourriture
yup