2015-11-25 1 views
-1

J'essaie de trouver une expression régulière qui satisfait une chaîne comme X7O9 - 0qiL0 où le nombre de caractères entre - séparateur est de 3 à 5 de chaque côté.expression régulière pour satisfaire forme de chaîne comme X7O9 - 0qiLA0 avec un ensemble de règles spécifiques

En outre des règles supplémentaires comme:

1) ont 1 à 2 chiffres sur le côté gauche
2) ont 0 - 2 lettres minuscules sur le côté droit
3) ont 1 ou plusieurs majuscules lettres sur le côté gauche

si le compte possible pour leurs positions aléatoires dans une chaîne-à-dire pour la lettre majuscule règle n ° 3 peut être premier, deuxième, troisième etc .. aussi longtemps qu'il est sur le côté gauche, il sera dîner.

Jusqu'à présent, je compris comment obtenir ma règle de base de 3 - 5 caractères de chaque côté du séparateur: (\w{3,5}) - (\w{3,5})

+0

Quel est le but de l'expression régulière? Cherchez-vous simplement des choses qui correspondent, ou voulez-vous réellement en analyser les valeurs? – RPGillespie

+0

Il peut être plus simple de faire '(\ w {3,5}) - (\ w {3,5})', puis de tirer sur chaque groupe de capture et de les envoyer aux fonctions de vérification individuelles, ie 'hasLowercase (2, word) 'ou' hasUppercase (1, word) ' – RPGillespie

+0

@RPGillespie J'utilise une bibliothèque js qui génère une chaîne aléatoire qui satisfera une regex donnée, donc je veux en générer une de regex que j'essaie de comprendre ci-dessus – Ilja

Répondre

1

utilisant l'expression rationnelle, ce serait:

^(?=\D*\d\D*\d?\D* -)(?=.*[A-Z].* -).{3,5} - (?=[^a-z]*[a-z]?[^a-z]*[a-z]?[^a-z]*).{3,5}$ 

Regex live here.