Restriction de la longueur des caractères dans les expressions régulières
Votre expression régulière initiale autorisait une longueur de caractères illimitée, mais lorsque vous avez tenté de la limiter à 15 caractères avec le quantificateur {1,15}, vous avez rencontré une erreur. En effet, les quantificateurs ne peuvent pas être appliqués aux ancres, telles que l'ancre ^ début de chaîne.
Solution utilisant Lookahead
Pour restreindre efficacement la longueur des caractères, vous peut utiliser une anticipation positive ancrée au début de la chaîne :
^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()"]*
Cette anticipation garantit que la chaîne suivante correspond à 1 à 15 caractères (spécifié par le quantificateur {1,15}) et se termine immédiatement après la correspondance. L'ancre $ indique la fin de la chaîne.
Évitement des quantificateurs limitatifs
Utilisation d'un quantificateur à la fin de l'expression régulière, tel que ^[a-zA- Z0-9]*[^$%^&*;:,<>?()"]{1,15}$, restreindrait à tort la longueur de la deuxième classe de caractères uniquement à 1 à 15 caractères. Cela ne limiterait pas la longueur de la chaîne entière.
Comment fonctionne la recherche anticipée
La recherche anticipée ( ?=.{1,15}$) évalue les 1 à 15 caractères suivants, y compris le caractère de nouvelle ligne à la fin de la chaîne (en raison de l'ancre $). l'expression renvoie vrai, sinon faux.
Gestion des séquences de nouvelle ligne
Si votre entrée peut contenir des séquences de nouvelle ligne, vous pouvez remplacer le caractère générique . -construction de personnage :
^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()"]*
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!