Maison > développement back-end > C++ > Comment limiter la longueur des caractères dans une expression régulière ?

Comment limiter la longueur des caractères dans une expression régulière ?

DDD
Libérer: 2025-01-26 20:14:15
original
892 Les gens l'ont consulté

How to Limit the Length of Characters in a Regular Expression?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 :

    Le sous-modèle
  • [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.
  • Assertion d'anticipation positive (?=.{1,15}$) Utilisez l'ancre $ pour affirmer qu'un nombre spécifié de caractères doit être à la fin d'une chaîne.
  • Cette méthode fonctionne avec ECMAScript et d'autres versions d'expressions régulières, telles que Python. Cependant, en Python, vous devez utiliser les ancres 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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal