Tilde opérateur dans les expressions Régulières
Je veux savoir quel est le sens de l'opérateur tilde dans les expressions régulières.
J'ai cette déclaration:
if (!preg_match('~^\d{10}$~', $_POST['isbn'])) {
$warnings[] = 'ISBN should be 10 digits';
}
J'ai trouvé ce document expliquant ce tilde signifie: ~
Il dit que =~
est un opérateur de perl qui signifie exécuter cette variable à l'encontre de cette expression régulière.
Mais pourquoi est-ce que mon expression régulière contient deux tilde opérateurs?
Vous devez vous connecter pour publier un commentaire.
Dans ce cas, c'est tout simplement être utilisé comme un délimiteur.
Généralement, en PHP, le premier et le dernier caractère d'une expression régulière sont des "séparateurs" pour marquer le début et la fin de la position d'une partie correspondante (dans le cas où vous souhaitez ajouter des modificateurs à la fin, comme moins gourmand, etc)
Généralement, PHP fonctionne ce à partir du premier caractère dans une chaîne qui se veut une expression régulière, correspondant à la deuxième occurrence de ce que le second délimiteur. Ceci est utile lorsque vous avez un accident de la normale délimiteur dans le texte (par exemple, les occurrences de
/
dans le texte) - cela signifie que vous n'avez pas à faire maladroite choses.Correspondant pour "
//
" avec le délimiteur défini à "/
"Correspondant pour "
//
" avec le délimiteur "#
"Dans ce cas, ça ne veut rien dire. C'est tout simplement de délimiter le début et la fin de votre modèle. En PCRE (Perl Compatible Regular Expressions), qui est ce que vous utilisez avec la preg_* en PHP, le motif est entrée le long de côté l'expression options, comme:
Cependant, l'utilisation de "/" comme séparateur dans ce cas est arbitraire, bien que la barre oblique est populaire, il peut être remplacé par n'importe quoi. Dans votre cas, c'est un tilde.