Maison  >  Article  >  interface Web  >  Comment les analyses anticipées peuvent-elles aider à limiter la longueur des caractères dans Regex ?

Comment les analyses anticipées peuvent-elles aider à limiter la longueur des caractères dans Regex ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-17 12:31:02518parcourir

How Can Lookaheads Help in Limiting Character Length in Regex?

Utiliser des analyses anticipées pour restreindre la longueur des caractères dans les expressions régulières

Lorsque vous travaillez avec des expressions régulières, il est souvent nécessaire de limiter le nombre de caractères qui correspondent un modèle spécifique. Cependant, tenter d'appliquer des quantificateurs aux ancres, comme le montre l'exemple suivant, peut conduire à des erreurs :

var test =  /^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()""']*${1,15}/    // Uncaught SyntaxError: Invalid regular expression

Pour surmonter cette limitation, nous pouvons utiliser une analyse anticipée ancrée au début de la chaîne d'entrée.

^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>()?""']*$

Cette analyse anticipée garantit que les caractères suivants satisfont aux conditions suivantes :

  • Ils correspondent au modèle spécifié dans la classe de caractères [a-zA-Z0-9] 1.
  • Leur longueur est comprise entre 1 et 15 caractères, comme spécifié par le quantificateur {1,15}.
  • Ils sont suivis de la fin de la chaîne, représentée par le signe dollar ancre $.

En utilisant cette approche, nous limitons efficacement la longueur de la chaîne d'entrée entière à 15 caractères tout en autorisant le spécifié modèle pour correspondre dans cette limite.

Remarques importantes

  • Lorsque vous utilisez cette méthode, n'oubliez pas d'utiliser des « classes de caractères » plutôt que des « groupes » pour les quantificateurs.
  • Les anticipations sont des assertions de largeur nulle, ce qui signifie qu'elles ne consomment pas de caractères mais vérifient quand même les correspondances.
  • Si la chaîne d'entrée peut contenir des séquences de nouvelle ligne, utilisez la construction portable [sS] au lieu de [sS]* pour correspondre à n'importe quel caractère, y compris les nouvelles lignes.

  1. $%^&*;:,<>()?""'

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!

Déclaration:
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