J'ai une chaîne à 10 chiffres et la condition est un nombre quelconque s'il est répété de manière consécutive et ne peut être répété que 4 fois, sinon il n'y a pas de limitation de répétition
Exemple: P>
1234567890 "match" 1213141516 "match" 1111234567 "match" 1233333456 "not match"
3 Réponses :
Vous pouvez utiliser l'expression régulière suivante et renvoyer 'correspondant' code> ou
'no_match' code> selon que le groupe de capture a été trouvé ou non.
\ 1 code> spécifiera que vous voulez
{4} code> répétitions du premier groupe de capture: p>
valid_string('1234567890')
# 'match'
valid_string('1111234567')
# 'match'
valid_string('1233333456')
# 'not_match'
La solution ne contient pas la contrainte de 10 chiffres.
Est-ce une contrainte aussi? Mettra à jour la réponse. Notez toutefois que "J'ai une chaîne de 10 chiffres" code> ne semble pas être une contrainte pour moi
Mise à jour de la réponse @niladrichakrabarty. N'oubliez pas que vous pouvez upvote / accepter les réponses, voir Que dois-je faire quand quelqu'un répond à ma question? , merci!
Y a-t-il une raison spécifique dont vous avez besoin pour le faire avec regex plutôt qu'une boucle simple contenant:
Dernièrement, j'apprends Regex et j'essaie divers problèmes comme celui-ci. Je suis d'accord, cela peut être facilement fait avec des boucles et des conditions.
Comme on le voit ici https://regex101.com/r/lx8zqs/1 < / p> ^ (?! \ d * (\ d) \ 1 {4}) \ d {10} $ code> p> P>
Expliquez à nouveau pourquoi la troisième ligne est une correspondance (4 celles) et le quatrième n'est pas (4 trois)?
C'est cinq 3, ce qui est plus de 4 donc il ne devrait pas correspondre
Ah, à droite. Compté le mal. Ma faute.