2 votes

regex pour les chaînes qui sont des lettres majuscules avec des nombres de longueur minimale 6, et des lettres majuscules avec des nombres de longueur minimale 6 et un trait d'union et un seul nombre.

Actuellement, j'ai cette regex :

(?:\d+[A-Z]|[A-Z]+\d)[A-Z-\d]{6,}|[0-A9-Z]{6,}|[0-9]{6,}

Je veux que cette expression rationnelle corresponde à n'importe quelle "chaîne" dans un paragraphe qui est :

Alphabets en majuscules avec chiffres et longueur minimale 6

Alphabets majuscules et chiffres avec trait d'union et longueur minimale 6

Uniquement les nombres dont la longueur minimale est de 6.

La regex ci-dessus fonctionne, mais elle ne correspond qu'aux alphabets et je veux l'exclure comment ?

A1A1A1A1A1A1A1A1 --> should match
12222222222222DE --> should match
'PRODUKT', 'PRODUKT', 'NICKNAME', 'PRODUKTNAME' --> shouldn't match any of this but its matching
123456 --> should match
6203-5458 --> shouldn't match
234SS-4NNNAA --> should match

0voto

Wiktor Stribiżew Points 100073

Vous pouvez utiliser

(?<![\dA-Z-])(?=[\dA-Z-]{6,})(?:[\d-]+[A-Z]|[A-Z-]+\d)[A-Z\d-]*|[0-9]{6,}

Voir le Démonstration des expressions rationnelles . Détails :

  • (?<![\dA-Z-]) - immédiatement à gauche, il ne doit pas y avoir de chiffre, de lettre majuscule ou de symbole. -
  • (?=[\dA-Z-]{6,}) - immédiatement à droite, il doit y avoir au moins 6 chiffres, lettres majuscules ou lettres minuscules. -
  • (?:[\d-]+[A-Z]|[A-Z-]+\d)[A-Z\d-]* - un ou plusieurs chiffres ou - puis une lettre majuscule ou une ou plusieurs lettres majuscules ou un trait d'union, puis un chiffre, puis zéro ou plusieurs lettres majuscules, chiffres ou traits d'union.
  • | - ou
  • [0-9]{6,} - six chiffres ou plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X