Maison  >  Article  >  développement back-end  >  Analyse détaillée d'exemples de base d'expressions régulières

Analyse détaillée d'exemples de base d'expressions régulières

王林
王林avant
2019-08-29 11:57:422242parcourir

Les expressions régulières sont souvent vues dans notre vérification ! Laissez-moi partager avec vous comment comprendre les expressions régulières plus simplement.
Tout d’abord, parlons de la dénomination des noms réguliers :

Je pense que tout le monde connaîtra ce mot ! "Expression régulière". Le « régulier » d'expression régulière est généralement traduit par « régulier », « régulier » et « conventionnel ». "Régulier" signifie ici "règles" et "lois", et expression régulière signifie "une expression qui décrit une certaine règle", ce que nous appelons expressions régulières. En fait, les expressions régulières sont utilisées pour réguler certains comportements ! Autrement dit, c’est une contrainte, au même titre que nous devons respecter le code de la route.
Personnellement, je pense qu'il n'est pas difficile de comprendre et de comprendre les règles habituelles ! Ajoutez simplement certaines des choses dont il faut se souvenir et utilisez-les avec flexibilité, et c'est tout !
D'accord ! Ensuite, je vais approfondir le corps principal de la régularité.
Jetons d'abord un coup d'œil aux éléments clés de la régularité. Si nous comprenons ces choses ! Généralement, il n'y aura aucun problème dans le projet !

Le premier ""
est communément appelé caractère d'échappement, qui marque un caractère comme caractère spécial ou caractère littéral. Par exemple : "n" correspond à "n". Si c'est "n", c'est un caractère de nouvelle ligne.
Quelqu'un devrait demander : et si je veux juste écrire la barre oblique "" ? C'est aussi très simple ! Écrivez simplement "\" comme ceci ! Pourquoi écrire deux "\" ! Juste pour différencier.

Le deuxième "^"
Ceci est communément appelé le caractère de départ, ce qui signifie que vous êtes prêt à écrire des expressions régulières ! Si la propriété Multiline de l'objet RegExp est définie, ^ correspond également à la position après "n" ou "r".

Le troisième "$"
Ceci est communément appelé le caractère final, qui peut aussi être considéré comme la fin (une explication très peu professionnelle) ! Si l'attribut Multiline de l'objet RegExp est défini, $ correspond également à la position avant "n" ou "r"

Le quatrième "*"
Ceci doit correspondre au précédent sous-expression La formule comporte zéro ou plusieurs fois. Par exemple : zo* peut correspondre à "z" et "zo" ou "zoo". Ce "*" équivaut à {0,}

Le cinquième "+"
correspond à la sous-expression précédente une ou plusieurs fois. Par exemple : "zo+" peut correspondre à "zo" et "zoo" ou "zooo". Le "*" et le "+" valent presque zéro fois et un équivaut à une fois. Ce "+" équivaut à {1,}.

Le sixième "?"
Cela correspond à la sous-expression précédente zéro ou une fois. Par exemple : « faire(s) ? » peut correspondre à « faire » ou « fait ». Ce point d'interrogation signifie soit correspondre à zéro fois, soit correspondre une fois !

Le septième "{}"
Combien de fois ce symbole correspond-il
1,{n} correspond à un certain nombre de fois, n est un non négatif ? entier , tel que : "o{2}" signifie correspondre à deux "oo", tels que : bon, nourriture, etc. ! Mais il ne peut pas correspondre au corps, car il n'y a qu'un seul o !
2,{n,} correspond au moins n fois, n est un entier non négatif, tel que : "o{2,}" Cela signifie correspondre à plus de deux "oo", tels que : bon, bon, bien, etc. "o{1,}" équivaut à "o+". "o{0,}" équivaut à "o*".
3,{n,m} Il s'agit d'une correspondance minimale de n fois et d'un maximum de m correspondances n et m sont tous deux des entiers non négatifs, où n<=m. Par exemple : "o{1,3}" correspond au corps, à la nourriture, à la nourriture. Mais cela ne correspond pas à la nourriture. "o{0,1}" équivaut à "o ?". Lorsque vous écrivez ici, veuillez noter qu'il ne peut y avoir d'espace entre la virgule et les deux chiffres.

Le huitième "?" usage spécial
Lorsque ce caractère est suivi de tout autre limiteur (*, +,?, {n}, {n,}, {n,m}), le modèle de correspondance est non gourmand. Le soi-disant non gourmand signifie que le moins est meilleur. Le mode non gourmand correspond au moins de chaînes recherchées possible, tandis que le mode gourmand par défaut correspond au plus grand nombre de chaînes recherchées possible. Par exemple, pour la chaîne « oooo », « o+ ? » correspondra à un seul « o », tandis que « o+ » correspondra à tous les « o ».

Le neuvième "."
correspond à n'importe quel caractère à l'exception du caractère de nouvelle ligne "n". Si vous souhaitez faire correspondre n'importe quel caractère du caractère de nouvelle ligne "n", utilisez le modèle "(.|n)".

Le dixième « modèle »
Ce « modèle » n'est pas facile à comprendre, et j'ai eu le vertige au premier coup d'œil ! Cependant, ma compréhension de cela est la suivante, j'espère que cela sera utile à tout le monde :
1 ?:pattern correspond au modèle mais n'obtient pas le résultat correspondant, par exemple : k(?:1|2|3) k. correspond à l'un des 123, exemple : k1|k2
2. ?=motif Aperçu positif positif Par exemple : K(?=1|2|3) Sélectionnez K lorsque K correspond à l'un des 123 Exemple : k dans k1 ou k dans k2
3. ?!modèle de vérification préalable négative Par exemple : k(?!1|2|3) Sélectionnez K lorsque K ne correspond à aucun des 123. Exemple : ne correspond pas à k dans k1. , mais cela peut être k4, k5
4. ?<=motif Exemple de pré-vérification positive inversée : (?<=1|2|3)k Sélectionnez K lorsque K correspond à l'un des 123 Exemple : k in 1k ou k dans 2k K
5. ?

Le onzième "|"
Ce symbole signifie ou, par exemple : "f|good" peut correspondre à "f" ou "good", et si c'était le cas"(f| g)ood" correspond à "food" ou "good".

Le douzième "[]"
Ce symbole signifie la somme des jeux de caractères. Il ressemble à "{}", mais sa signification est très différente.

Le treizième "()"
Ce tableau ou ensemble symbolique

1, [xyz] correspond à n'importe quel caractère contenu. C’est-à-dire choisissez l’un des trois. Exemple : "[abc]" peut correspondre au "a" dans "company" mais ne peut pas correspondre à "beautiful" car deux lettres y sont utilisées.
2. [^xyz] Il s'agit d'un ensemble de caractères négatifs, qui peuvent également être qualifiés de « non ». Exemple : "[^abc]" peut correspondre à "drop", etc. ! C'est bien tant qu'il n'y a pas de lettres "abc" dans le mot.
3. Plage de caractères [a-z]. Correspond à n’importe quel caractère dans la plage spécifiée. Par exemple, "[a-z]" correspond à n'importe quel caractère alphabétique minuscule compris entre "a" et "z". Il peut également s'écrire « [0-9] », qui correspond directement aux nombres de 0 à 9.
4. [^a-z] Je pense qu'il va sans dire que tout le monde devrait savoir ce que cela signifie, n'est-ce pas ? Cela signifie ce que vous pensez : tout caractère qui n'est pas dans la plage de "a" à "z", au début ! Quand j'ai vu ça, j'ai cru que c'était une lettre qui n'était pas entre un et un z ! J'ai dit que s'il n'y a pas de lettre entre a et z, alors il n'y a que "ü" en chinois ! Cela semble lire « Yu » ! héhé ! Tout le monde peut le voir clairement ! C'est un personnage, pas une lettre.

Jetons un coup d'œil aux significations particulières de "" et des lettres
"b" correspond à la limite d'un mot, ce qui signifie la position entre le mot et l'espace. Par exemple, « erb » peut correspondre au « er » dans « never » mais pas au « er » dans « verb ». Je pense que c'est plus facile à retenir. Vous pouvez vous en souvenir comme ceci : le bord de la frontière commence par b !
"B" est l'opposé de "b" et correspond aux limites des non-mots. "erB" peut correspondre au "er" dans "verb", mais pas au "er" dans "jamais".
« d » est utilisé plus souvent ! Je vous suggère de garder cela à l'esprit. Cela correspond à des caractères numériques, équivalents à [0-9].
"D" est également facile à comprendre. Cela signifie également le sens inverse, à savoir que ce n'est pas un nombre, équivalent à [^0-9].
"f" correspond à un caractère de saut de page. Pas besoin de trop expliquer à ce sujet ! Les quatre suivants sont trop nombreux pour être trop expliqués. N'oubliez pas cela ! Utilisez-le simplement dans votre projet !
"n" correspond à un caractère de nouvelle ligne.
"r" correspond à un caractère de retour chariot.
"t" correspond à un caractère de tabulation.
"v" correspond à un caractère de tabulation verticale.
"s" correspond à n'importe quel caractère nul, correspond à n'importe quel caractère d'espacement, y compris les espaces, les tabulations, les sauts de formulaire, etc. Équivalent à [fnrtv]. Autrement dit, celui-ci comprend les cinq ci-dessus !
"S" est un caractère autre qu'un espace équivalent à [^ fnrtv].
À ce stade, tout le monde peut avoir l'impression que les règles habituelles sont en fait ces personnages ! Et certains d'entre eux peuvent être déduits par notre pensée logique, et certains d'entre eux sont répétitifs, à condition que chacun puisse les utiliser avec flexibilité.

"w" correspond à n'importe quel caractère de mot, y compris un trait de soulignement. Équivalent à "[A-Za-z0-9_]". Ceci est beaucoup utilisé dans la pratique et je vous suggère de garder cela à l’esprit.

"W" correspond à des caractères numériques autres que des mots. Équivalent à "[^A-Za-z0-9_]".

D'accord ! En gros, c’est tout ce dont vous devez vous souvenir ! Certains maîtres de regex peuvent leur dire : « Vous n'êtes pas complet du tout ? » Laissez-moi vous expliquer à l'avance. Ce que j'ai écrit ne sont que quelques éléments de base qui sont courants dans les projets et, en gros, ceux-ci peuvent être utilisés dans les projets. . Utilisez-le librement.
Ensuite, faisons quelques choses de fond avec vous et analysons quelques expressions régulières avec vous.
Par exemple, cette règle régulière : ^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5 ][0 -9])$
Je pense que les experts réguliers en regex sauront de quoi il s'agit en un coup d'œil. Bien sûr, certaines personnes dotées d’une forte pensée logique sauront de quoi il s’agit après seulement deux regards. Oui, c’est la loi du temps.

OK Analysons cette expression régulière à partir de ce « ^ », « ([0-1]?[0-9]|2[0-3]) » est un groupe, « [0-1 ]?" La fonction de ce point d'interrogation est qu'il peut y avoir au plus zéro ou un 0 ou 1, "[0-9]" est n'importe quel nombre entre 0 et 9, "|" signifie "ou", ce qui signifie que c'est pas "[ 0-1]?[0-9]" n'est "2[0-3]", "2[0-3]" est le premier 2, ce qui signifie 2, et le dernier 0 à 3 est n'importe lequel entre 0 et 3. Nombre, ":" signifie ":", "([0-5][0-9])" est également un groupe, "[0-5]" est n'importe quel nombre entre 0 et 5, " [0- 9]" est n'importe quel nombre compris entre 0 et 9, ":" est également la signification originale, "([0-5][0-9])" est également un groupe, "[0-5]" est entre 0 et 5 N'importe quel nombre, "[0-9]" est n'importe quel nombre entre 0 et 9 et "$" est le terminateur.
Laissez-moi analyser une décimale avec vous

Par exemple : ^[1-9]+d*(.[0-9]{1,2})?|0(.[0-9]{1,2})?$
" ^ " est le symbole de début, "[1-9]+" où "+" signifie au moins un ou plusieurs entre 1 et 9, "d*", ce "d" est un nombre, et ce "*" signifie à au moins un nombre nul ou plusieurs nombres, "(.[0-9]{1,2}) ?" Dans ce groupe, "." est le point d'origine, "[0-9]{1,2}" 0 à 9 Il y a un ou deux nombres entre les deux, et le point d'interrogation "?" derrière signifie qu'il y a zéro ou un "(.[0-9]{1,2})". "|" est soit "[1-9]+d*(.[0-9]{1,2}) ?" ou "0(.[0-9]{1,2}) ?". "0(.[0-9]{1,2}) ?" Le 0 dans ce groupe est la signification originale, et le "." dans ce groupe de "(.[0-9]{1,2}) ?" est la signification originale. "[0-9]{1,2}" Il y a un ou deux nombres entre 0 et 9. Le point d'interrogation "?" derrière signifie qu'il y a zéro ou un nombre "(.[0 -9]{1, 2})".

Ci-dessous, je vais vous donner quelques exemples d'expressions régulières courantes :

^[1-9]d*$ //Match des entiers positifs
^-[1 -9]d* $ //Match les entiers négatifs
^-?[1-9]d*$ //Match les entiers
^[1-9]d*|0$ //Match les entiers non négatifs (Entier positif + 0 )  
^-[1-9]d*|0$ //Match un entier non positif (entier négatif + 0)  
^[1-9]d*.d*|0.d *[1 -9]d*$ //Faire correspondre les nombres à virgule flottante positifs
^-([1-9]d*.d*|0.d*[1-9]d*)$ //Faire correspondre les nombres à virgule flottante négatifs Points
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //Correspondre au nombre à virgule flottante
^ [ 1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ // Correspond aux nombres à virgule flottante non négatifs (nombres à virgule flottante positifs + 0)  
^(- ([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //Faire correspondre des nombres à virgule flottante non positifs (flottants négatifs nombres de points + 0)
^[a-zA-Z][a-zA-Z0-9_]{4,15}$ //Le compte correspondant est-il légal (commençant par une lettre, 5 à 16 octets autorisés, traits de soulignement alphanumériques autorisés)
^ s*|s*$ //Expression régulière correspondant aux caractères vides de début et de fin
ns*r //Expression régulière correspondant aux lignes vides
[^x00-xff] //Correspondance de doubles -octets de caractères (y compris les caractères chinois à l'intérieur)
[u4e00-u9fa5] //Expression régulière correspondant aux caractères chinois

Nom d'utilisateur
^[a-z0-9_-]{3,16}$

Mot de passe
^[a-z0-9_-]{6,18}$

Valeur hexadécimale
^#?([a-f0-9]{6}| [a-f0-9]{3})$

E-mail
^([a-z0-9_.-]+)@([da-z.-]+).([ a-z .]{2,6})$
^[a-zd]+(.[a-zd]+)*@([da-z](-[da-z])?)+(. { 1,2}[a-z]+)+$

URL
^(https?://)?([da-z.-]+).([a-z.]{2, 6 })([/w .-]*)*/?$

Adresse IP
((2[0-4]d|25[0-5]|[01]?dd? ) .){3}(2[0-4]d|25[0-5]|[01]?dd?)

ou
^(?:(?:25[0- 5 ]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0- 4 ][0-9]|[01]?[0-9][0-9]?)$

Balise HTML
^<([a-z]+)([^< ] +)*(?:>(.*)|s+/>)$

Ce qui précède est une explication de certaines connaissances de base sur les expressions régulières avec des exemples pratiques, j'espère que cela sera possible. être utile Cela aidera les étudiants qui sont confus au sujet des expressions régulières. Veuillez signaler toute erreur.

Pour plus de questions connexes, veuillez visiter le site Web PHP chinois : Tutoriel vidéo PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer