Méthode d'amélioration de la limite de longueur des caractères des expressions régulières
Votre expression régulière d'origine n'a pas imposé de limite à la longueur des caractères :
<code>var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()\""\']*$/</code>
Afin de limiter la longueur des caractères à 15, vous essayez de modifier l'expression comme :
<code>var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()\""\']*${1,15}/</code>
Cela générera une erreur car les quantificateurs ne peuvent pas être appliqués directement aux ancres. La bonne façon de limiter la longueur d'une chaîne d'entrée est d'utiliser une assertion anticipée au début :
<code>^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()\"']*$</code>
Cette assertion d'anticipation garantit que la chaîne d'entrée correspond à la plage de caractères spécifiée et comporte entre 1 et 15 caractères, appliquant ainsi la limite de longueur de caractères.
Par rapport à l'utilisation d'un quantificateur restrictif à la fin (comme {1,15}), l'approche anticipée vous permet de limiter la longueur de la chaîne d'entrée entière. Le quantificateur est appliqué au sous-modèle de l'assertion d'anticipation, garantissant qu'il correspond au nombre requis de caractères depuis le début de la chaîne.
Voici quelques autres points à noter :
[a-zA-Z0-9]*
correspond à une séquence de lettres ou de chiffres de n'importe quelle longueur. C'est l'équivalent du sous-modèle (a-z|A-Z|0-9)*
utilisé dans votre expression originale. (?=.{1,15}$)
Utilisez l'ancre $
pour affirmer qu'un nombre spécifié de caractères doit être à la fin d'une chaîne. A
et Z
au lieu de ^
et $
. De plus, si votre chaîne d'entrée peut contenir des nouvelles lignes, vous pouvez utiliser la construction d'expression régulière de caractères arbitraires [sS]
portable :
<code>^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()\"']*$</code>
Cela garantit que les nouvelles lignes sont également incluses dans la limite de longueur de caractères.
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!