Maison > Article > développement back-end > Résumé du contenu de la régularité PHP (détaillé)
Le contenu de cet article est un résumé (détaillé) du contenu régulier de PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
1. Connaissances de base régulières
Localisateurs de lignes (^ et $)
Les localisateurs de lignes sont utilisés pour décrire les limites des chaînes. "$" représente la fin de la ligne. "^" représente le début de la ligne. Par exemple, "^de" représente une chaîne commençant par de. "de$" représente une chaîne se terminant par de.
Délimiteur de mot
Lorsque nous recherchons un mot, par exemple si an existe dans une chaîne "gril et corps", il est évident que s'il correspond, an est définitivement OK. la chaîne « gril et body » correspond. Comment pouvons-nous faire correspondre des mots au lieu d'une partie de mots ? À ce stade, nous pouvons être un délimiteur de mots b.
Si banb correspond à "gril et body", il vous indiquera qu'il ne peut pas correspondre.
Bien sûr, il y a un B majuscule, qui signifie exactement le contraire de b. La chaîne à laquelle elle correspond ne peut pas être un mot complet, mais une partie d'autres mots ou chaînes. Comme BanB.
Sélectionnez le caractère (|) pour représenter ou.
Sélectionnez le caractère pour représenter ou. Par exemple, Aa|aA signifie Aa ou aA. Notez que la différence entre l'utilisation de "[]" et "|" est que "[]" ne peut correspondre qu'à un seul caractère, tandis que "|" peut correspondre à une chaîne de n'importe quelle longueur. Lorsque vous utilisez "[]", il est souvent utilisé avec le caractère de connexion "-", tel que [a-d], qui représente a ou b ou c ou d.
Exclure des caractères, exclure des opérations
Les expressions régulières fournissent "^" pour exclure les caractères qui ne correspondent pas, ^ est généralement placé entre []. Par exemple, [^1-5], ce caractère n'est pas un nombre compris entre 1 et 5.
Qualificateur (?*+{n, m})
Le qualificateur est principalement utilisé pour limiter le nombre d'occurrences de chaque chaîne.
限定字符 | 含义 |
---|---|
? | 零次或一次 |
* | 零次或多次 |
+ | 一次或多次 |
{n} | n次 |
{n,} | 至少n次 |
{n,m} | n到m次 |
Par exemple, (D+) représente un ou plusieurs D
L'opérateur point
correspond à n'importe quel caractère (à l'exclusion des caractères de nouvelle ligne)
Barre oblique inverse dans l'expression ()
La barre oblique inverse dans l'expression a plusieurs significations, telles que l'échappement, la spécification d'un jeu de caractères prédéfini, la définition d'assertions et l'affichage de caractères non imprimables.
Caractères d'échappement
Les caractères d'échappement convertissent principalement certains caractères spéciaux en caractères ordinaires. Ces caractères spéciaux couramment utilisés incluent ".", "?", "", etc.
Spécifier un jeu de caractères prédéfini
字符 | 含义 |
---|---|
d | 任意一个十进制数字[0-9] |
D | 任意一个非十进制数字 |
s | 任意一个空白字符(空格、换行符、换页符、回车符、字表符) |
S | 任意一个非空白字符 |
w | 任意一个单词字符 |
W | 任意个非单词字符 |
###Afficher les caractères non imprimables
字符 | 含义 |
---|---|
a | 报警 |
b | 退格 |
f | 换页 |
n | 换行 |
r | 回车 |
t | 字表符 |
Caractère entre crochets ()
Les principales fonctions des parenthèses dans les expressions régulières sont :
Changer la portée des qualificatifs tels que (|, *, ^)
Par exemple (mon|votre)bébé, s'il n'y a pas de " ( )", | correspondra soit à mon bébé, soit à votre bébé. Entre parenthèses, il correspondra soit à mon bébé, soit à votre bébé.
est regroupé pour une référence facile
Modificateur de motif
Le rôle du modificateur de motif est de définir le motif, c'est-à-dire la façon dont le modèle régulier l'expression ressemble à expliquer. Les principaux modèles en php sont les suivants :
Modifier | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
je | Ignorer la casse | ||||||||||
m | Mode texte multiple | ||||||||||
s | Mode texte sur une seule ligne | ||||||||||
|
Ignorer les caractères d'espacement |
U Mode paresseux (n'écrivez pas le mode gourmand par défaut)
2 Fonctions et exemples PHP couramment utilisés
fonction preg_grep()preg_grep est utilisée pour renvoyer des entrées de tableau qui correspondent à un modèle.
Syntaxe
Renvoie un tableau d'éléments dans l'entrée de tableau donnée qui correspondent au motif.array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )
Description du paramètre :
Le résultat de l'exécution est le suivant :
<?php $array = array(1, 2, 3.4, 53, 7.9); // 返回所有包含浮点数的元素 $fl_array = preg_grep("/^(\d+)?\.\d+$/", $array); print_r($fl_array); ?>On peut voir que preg_grep ne renvoie que les nombres à virgule flottante dans le tableau.
Array ( [2] => 3.4 [4] => 7.9 )Fonction b.preg_match()
Expression régulière PHP (PCRE)
La fonction preg_last_error est utilisée pour effectuer une correspondance d'expression régulière.
Syntaxe
Rechercher dans le sujet une correspondance de l'expression régulière donnée par le modèle.int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
Description du paramètre :
$pattern : Le modèle à rechercher, sous forme de chaîne.
$subject : chaîne d'entrée.
$matches : si le paramètre correspond est fourni, il sera renseigné comme résultat de recherche. $matches[0] contiendra le texte correspondant au modèle complet, $matches[1] contiendra le texte correspondant au premier sous-groupe de capture, et ainsi de suite.
$flags : les indicateurs peuvent être définis sur les valeurs d'indicateur suivantes :
PREG_OFFSET_CAPTURE : Si cet indicateur est passé, le décalage de la chaîne (par rapport à la chaîne cible). Remarque : Cela modifiera le tableau rempli dans le paramètre matches afin que chaque élément devienne une chaîne où le 0ème élément est la chaîne correspondante et le 1er élément est le décalage de la chaîne correspondante dans la chaîne cible subject .
offset : Normalement, la recherche commence au début de la chaîne cible. Le paramètre facultatif offset est utilisé pour spécifier la recherche commençant à partir d'un point inconnu dans la chaîne cible (l'unité est en octets).
Valeur de retour
Exemple
<?php //模式分隔符后的"i"标记这是一个大小写不敏感的搜索 if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { echo "查找到匹配的字符串 php。"; } else { echo "未发现匹配的字符串 php。"; } ?>Trouver le mot « word"
查找到匹配的字符串 php。Le résultat de l'exécution est le suivant :
<?php /* 模式中的\b标记一个单词边界,所以只有独立的单词"web"会被匹配,而不会匹配 * 单词的部分内容比如"webbing" 或 "cobweb" */ if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) { echo "查找到匹配的字符串。\n"; } else { echo "未发现匹配的字符串。\n"; } if (preg_match("/\bweb\b/i", "PHP is the website scripting language of choice.")) { echo "查找到匹配的字符串。\n"; } else { echo "未发现匹配的字符串。\n"; } ?>Récupérer le nom de domaine dans l'URL
查找到匹配的字符串。 未发现匹配的字符串。Le résultat de l'exécution est le suivant :
<?php // 从URL中获取主机名称 preg_match('@^(?:http://)?([^/]+)@i', "http://www.runoob.com/index.html", $matches); $host = $matches[1]; // 获取主机名称的后面两部分 preg_match('/[^.]+\.[^.]+$/', $host, $matches); echo "domain name is: {$matches[0]}\n"; ?>
Fonction c.preg_match_all()
domain name is: runoob.com
La fonction preg_match_all est utilisée pour effectuer une correspondance d'expression régulière globale.
Syntaxe
Recherchez tous les résultats correspondants dans le sujet qui correspondent au modèle d'expression régulière donné et affichez-les dans les correspondances dans l'ordre spécifié par l'indicateur.int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )
Une fois la première correspondance trouvée, la sous-séquence continue la recherche à partir de la dernière position correspondante.
Description du paramètre :
$pattern : Le modèle à rechercher, sous forme de chaîne.
$subject : chaîne d'entrée
$matches : tableau multidimensionnel, affiche tous les résultats correspondants en tant que paramètres de sortie, le tri des tableaux est spécifié par des indicateurs.
$flags : Peut être utilisé en combinaison avec les balises suivantes (notez que PREG_PATTERN_ORDER et PREG_SET_ORDER ne peuvent pas être utilisés en même temps) :
PREG_PATTERN_ORDER : Les résultats sont triés en $matches[0 ] pour enregistrer toutes les correspondances du modèle complet, $matches[ 1] Enregistrez toutes les correspondances du premier sous-groupe, et ainsi de suite.
PREG_SET_ORDER : Les résultats sont triés comme suit : $matches[0] contient toutes les correspondances (y compris les sous-groupes) de la première correspondance, $matches[1] contient toutes les correspondances (y compris les sous-groupes) de la deuxième correspondance), et ainsi sur.
PREG_OFFSET_CAPTURE : Si cet indicateur est passé, chaque correspondance trouvée est renvoyée avec son décalage par rapport à la chaîne cible augmenté.
offset : Généralement, la recherche commence au début de la chaîne cible. Le paramètre facultatif offset est utilisé pour lancer la recherche à partir de la position spécifiée dans la chaîne cible (l'unité est en octets).
Valeur de retour
Exemple
<?php $userinfo = "Name: <b>PHP</b> <br> Title: <b>Programming Language</b>"; preg_match_all ("/<b>(.*)<\/b>/U", $userinfo, $pat_array); print_r($pat_array[0]); ?>fonction d. preg_replace()
Array ( [0] => <b>PHP</b> [1] => <b>Programming Language</b> )
Syntaxe
Recherchez la partie du sujet qui correspond au motif et remplacez-la par remplacement.mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
Description du paramètre :
$pattern : Le modèle à rechercher, qui peut être une chaîne ou un tableau de chaînes.
$replacement : Chaîne ou tableau de chaînes utilisé pour le remplacement.
$subject : La chaîne cible ou le tableau de chaînes à rechercher et à remplacer.
$limit : Facultatif, le nombre maximum de substitutions pour chaque chaîne de sujet par modèle. La valeur par défaut est -1 (aucune limite).
$count: 可选,为替换执行的次数。(用于统计被替换的次数)
如果 subject 是一个数组, preg_replace() 返回一个数组, 其他情况下返回一个字符串。
如果匹配被查找到,替换后的 subject 被返回,其他情况下 返回没有改变的 subject。如果发生错误,返回 NULL。
<?php $string = 'google 123, 456'; $pattern = '/(\w+) (\d+), (\d+)/i'; $replacement = 'runoob ${2},$3'; echo preg_replace($pattern, $replacement, $string); ?>
执行结果如下所示:
runoob 123,456
<?php $str = 'runo o b'; $str = preg_replace('/\s+/', '', $str); // 将会改变为'runoob' echo $str; ?>
执行结果如下所示:
runoob
<?php $string = 'The quick brown fox jumped over the lazy dog.'; $patterns = array(); $patterns[0] = '/quick/'; $patterns[1] = '/brown/'; $patterns[2] = '/fox/'; $replacements = array(); $replacements[2] = 'bear'; $replacements[1] = 'black'; $replacements[0] = 'slow'; echo preg_replace($patterns, $replacements, $string); ?>
执行结果如下所示:
The bear black slow jumped over the lazy dog.
<?php $count = 0; echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count); echo $count; //3 ?>
执行结果如下所示:
xp***to 3
preg_replace 函数通过一个正则表达式分隔字符串。
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
通过一个正则表达式分隔给定字符串。
参数说明:
$pattern: 用于搜索的模式,字符串形式。
$subject: 输入字符串。
$limit: 可选,如果指定,将限制分隔得到的子串最多只有limit个,返回的最后一个 子串将包含所有剩余部分。limit值为-1, 0或null时都代表"不限制", 作为php的标准,你可以使用null跳过对flags的设置。
$flags: 可选,可以是任何下面标记的组合(以位或运算 | 组合):
PREG_SPLIT_NO_EMPTY: 如果这个标记被设置, preg_split() 将进返回分隔后的非空部分。
PREG_SPLIT_DELIM_CAPTURE: 如果这个标记设置了,用于分隔的模式中的括号表达式将被捕获并返回。
PREG_SPLIT_OFFSET_CAPTURE: 如果这个标记被设置, 对于每一个出现的匹配返回时将会附加字符串偏移量. 注意:这将会改变返回数组中的每一个元素, 使其每个元素成为一个由第0 个元素为分隔后的子串,第1个元素为该子串在subject 中的偏移量组成的数组。
返回一个使用 pattern 边界分隔 subject 后得到的子串组成的数组。
<?php //使用逗号或空格(包含" ", \r, \t, \n, \f)分隔短语 $keywords = preg_split("/[\s,]+/", "hypertext language, programming"); print_r($keywords); ?>
执行结果如下所示:
Array ( [0] => hypertext [1] => language [2] => programming )
<?php $str = 'runoob'; $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); print_r($chars); ?>
执行结果如下所示:
Array ( [0] => r [1] => u [2] => n [3] => o [4] => o [5] => b )
<?php $str = 'hypertext language programming'; $chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE); print_r($chars); ?>
执行结果如下所示:
Array ( [0] => Array ( [0] => hypertext [1] => 0 ) [1] => Array ( [0] => language [1] => 10 ) [2] => Array ( [0] => programming [1] => 19 ) )
一、校验数字的表达式
1 数字:
^[0-9]*$
2 n位的数字:
^\d{n}$
3 至少n位的数字:
^\d{n,}$
4 m-n位的数字:
^\d{m,n}$
5 零和非零开头的数字:
^(0|[1-9][0-9]*)$
6 非零开头的最多带两位小数的数字:
^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 带1-2位小数的正数或负数:
^(\-)?\d+(\.\d{1,2})?$
8 正数、负数、和小数:
^(\-|\+)?\d+(\.\d+)?$
9 有两位小数的正实数:
^[0-9]+(.[0-9]{2})?$
10 有1~3位小数的正实数:
^[0-9]+(.[0-9]{1,3})?$
11 非零的正整数:
^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12 非零的负整数:
^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13 非负整数:
^\d+$ 或 ^[1-9]\d*|0$
14 非正整数:
^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非负浮点数:
^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16 非正浮点数:
^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17 正浮点数:
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18 负浮点数:
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19 浮点数:
^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
二、校验字符的表达式
1 汉字:
^[\u4e00-\u9fa5]{0,}$
2 英文和数字:
^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
3 长度为3-20的所有字符:
^.{3,20}$
4 由26个英文字母组成的字符串:
^[A-Za-z]+$
5 由26个大写英文字母组成的字符串:
^[A-Z]+$
6 由26个小写英文字母组成的字符串:
^[a-z]+$
7 由数字和26个英文字母组成的字符串:
^[A-Za-z0-9]+$
8 由数字、26个英文字母或者下划线组成的字符串:
^\w+$ 或 ^\w{3,20}$
9 中文、英文、数字包括下划线:
^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、数字但不包括下划线等符号:
^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
11 可以输入含有^%&',;=?$\"等字符:
[^%&',;=?$\x22]+
12 禁止输入含有~的字符:
[^~\x22]+
三、特殊需求表达式
1. Adresse e-mail :
^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$
2. :
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9] { 0,62})+/.?
3, InternetURL :
[a-zA-z]+://[^s]* ou ^http://([w-]+.) + [w-]+(/[w-./?%&=]*)?$
4, numéro de téléphone portable :
^(13[0-9]|14[5|7]| 15[ 0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$
5, Numéros de téléphone ("XXX-XXXXXXX", "XXXX-XXXXXXXX", "XXX-XXXXXXX", "XXX-XXXXXXXX", "XXXXXXX" et "XXXXXXXXX") :
^((d{3,4} -)| d{3.4}-)?d{7,8}$
6 Numéro de téléphone national (0511-4405222, 021-87888822) :
d{3}-d{8}|d{4 }-d {7}
7. Numéro d'identification :
Carte d'identité à 15 ou 18 chiffres :
^d{15}|d{18}$
Carte d'identité à 15 chiffres :
^[1 -9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$
Carte d'identité 18 bits :
^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1| 2]d) |3[0-1])d{4}$
8. Numéro d'identification court (chiffres, lettres se terminant par x) :
^([0-9]){7,18} (x|X )?$
ou
^d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9. Le compte est-il légal (commençant par une lettre, autorisant 5 à 16 octets, autorisant les traits de soulignement alphanumériques) :
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10, mot de passe (commençant par Commençant par une lettre, la longueur est comprise entre 6 et 18, et ne peut contenir que des lettres, des chiffres et des traits de soulignement) :
^[a-zA-Z]w{5,17}$
11, mot de passe fort (doit inclure la taille Écrivez une combinaison de lettres et de chiffres, les caractères spéciaux ne peuvent pas être utilisés, la longueur est comprise entre 8 et 10) :
^(?=.*d)(?=.*[a-z ])(?=.*[A-Z]) .{8,10}$
12. Format de date :
^d{4}-d{1,2}-d{1,2}
13. 12 mois de l'année (01 ~09 et 1~12) :
^(0?[1-9]|1[0-2])$
14, 31 jours d'un mois ( 01~09 et 1~31) :
^((0?[1-9])|((1|2)[0-9])|30|31)$
15, format de saisie d'argent :
16, 1. Oui Nous pouvons accepter quatre formes de représentation monétaire : "10 000,00" et "10 000,00", et "10 000" et "10 000" sans "cents" :
^[1-9][0 -9]*$
17, 2. Cela signifie tout nombre qui ne commence pas par 0, mais cela signifie aussi qu'un caractère "0" ne passe pas, on utilise donc la forme suivante :
^(0 |[1-9][ 0-9]*)$
18, 3. Un 0 ou un nombre qui ne commence pas par 0. On peut aussi autoriser un signe négatif au début :
^(0 |-?[1-9][ 0-9]*)$
19, 4. Cela signifie un 0 ou un nombre qui peut être négatif et ne commence pas par 0. Laissez l'utilisateur commencer par 0. Supprimez le signe négatif aussi, car l'argent ne peut jamais. Est-il négatif ? Ce que nous devons ajouter ci-dessous, c'est expliquer la partie décimale possible :
^[0-9]+(.[0-9]+)?$
20, 5. Ce qu'il faut expliquer, c'est qu'il doit y avoir au moins 1 chiffre après la virgule, donc "10" n'est pas transmis, mais "10" et "10.2" sont transmis :
^[0-9. ]+(.[0-9]{2 })?$
21. De cette façon, nous stipulons qu'il doit y avoir deux décimales après la virgule. Si vous pensez que c'est trop dur, vous pouvez. faites ceci :
^[0-9]+(.[0-9]{1 ,2})?$
22. 7. Cela permet à l'utilisateur d'écrire une seule décimale. Nous devrions maintenant considérer. la virgule dans le nombre Nous pouvons faire ceci :
^[0-9]{1,3 }(,[0-9]{3})*(.[0-9]{1,2}) ?$
23, 8,1 à 3 chiffres, suivis d'une virgule + 3 chiffres, virgule Devient facultatif, pas obligatoire :
^([0-9]+|[0-9]{1,3}( ,[0-9]{3})*)(.[0-9] {1,2})?$
24. Remarque : Ceci est le résultat final. N'oubliez pas que "+" peut être. remplacé par "*" si vous pensez qu'une chaîne vide est acceptable (étrange, pourquoi ?) Enfin, n'oubliez pas de supprimer la barre oblique inverse lors de l'utilisation de la fonction, les erreurs courantes sont ici
25, fichier xml :
^([a-zA-Z]+-?)+[a-zA -Z0-9]+\.[x|X][m|M][l|L]$
26, expression régulière de Caractères chinois :
[u4e00-u9fa5]
27, caractères sur deux octets :
[^x00-xff]
(y compris les caractères chinois, peuvent être utilisés pour calculer la longueur de la chaîne (la longueur d'un caractère codé sur deux octets compte pour 2, et la longueur d'un caractère ASCII compte pour 1))
28 . Expression régulière pour les lignes vides : ns*r (peut être utilisée pour supprimer des lignes vides)
. 29. Expression régulière pour les balises HTML :
55d111624e3902709f5693725e852dcb]*> *?0a914b8e8cea82ac76ea0d3084794b8a|<.* (La version circulant sur Internet est dommage, celui ci-dessus ne peut fonctionner que partiellement, et il est toujours impuissant pour les balises imbriquées complexes)
30 Régularisation des caractères d'espacement de début et de fin Expression : ^s*|s*$ ou (^s*)| (s*$) (peut être utilisé pour supprimer les caractères vides au début et à la fin de la ligne (y compris les espaces, les tabulations, les sauts de formulaire, etc.), expressions très utiles)
31, numéro Tencent QQ : [1- 9][0-9]{4,} (le numéro Tencent QQ commence à 10000)
32, code postal chinois : [1-9] d{5}(?!d) (le code postal chinois est composé de 6 chiffres)
33. Adresse IP : d+.d+.d+.d+ (utile lors de l'extraction de l'adresse IP)
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!