J'ai besoin de la regex pour valider la chaîne entrée de l'utilisateur, la chaîne peut être des formats suivants. P>
EX: Je cherche la regex pour autoriser le numéro de combinaisons et est-il possible d'avoir une regex comme ça? p> 1w 2D 1H code> ou 2W 1H code> ou 1w 2d code>. De même, des combinaisons de chiffres et W, D et H. p>
w code> ou d code> ou h code>. p>.
5 Réponses :
Nous pouvons essayer d'écrire un analyseur rudimentaire pour vérifier la chaîne d'entrée.
string input = "1w 2d 1h";
string[] parts = Regex.Split(input, @"\s+");
bool success = true;
if (parts.Length > 3)
{
success = false;
}
else
{
Regex regex = new Regex(@"\d+(?:w|d|h)");
foreach (string part in parts)
{
Match match = regex.Match(part);
if (!match.Success)
{
success = false;
}
}
}
if (success)
{
Console.WriteLine("MATCH");
}
else
{
Console.WriteLine("NO MATCH");
}
Vous pourriez dire que vous voulez
\ d + code> n'importe quel nombre, 1 ou plusieurs fois li>
-
[wdh] code> l'un des w, d, h li>
-
(?: | $) code> espace ou fin de chaîne li>
ul> Puis placez ceci dans un groupe, en boucle 1 ou plus fois p>
-
(?: code> Début du groupe non-capture li>
-
) + code> fin du groupe non-capture, 1 ou plusieurs fois li>
-
^ code> et $ code> début et fin de chaîne respectivement li>
ul> résultat p> xxx pré> EDIT: Je vois que vous avez ajouté plus d'exigences dans les commentaires de votre question, cette regex ne remplira pas vos dernières exigences < / p> p>
Merci pour la façon dont je vais essayer de le faire comme de mes besoins :-)
Essayez Explantation: P>
Démo P> ^ (?: \ d + w?)? (?: \ d + d?)? (?: \ d + h)? $ code> p> p> p> P>
^ code> - correspondre au début d'une chaîne p>
(?: ...) code> - groupe non capturant p>
\ d + code> - correspond à un ou plusieurs chiffres p>
w code>, d code>, h code> - correspondez littéralement w code>, d code>, h code> respectivement p>
? code> - Correspondre à un modèle de précédent zéro ou une fois p>
Cela correspondrait à des choses comme 1w2d3h code>, sans espaces, Voir la démo a >. Vérifiez la réponse par @hahaal pour une approche de regex correcte.
@sahithi Voir Tim Biegeleisen Commen.
Enfin, la chaîne suivante semble fonctionner correctement pour moi ... Merci, tout le monde pour aider. P> P>
Cela fonctionne pour votre besoin. J'espère que cela t'aides! Commande ( w-> d-> h em>) garantie. cas de test: p> 10W 12D 11H p> 1W 2D P> 2W 1H P> 1D 1H p> 1D 1H p> 3W 2H p> p> P>
Vous devriez essayer de le faire en premier et montrez-nous vos résultats, même si cela ne fonctionne pas :)
\ D + W \ S \ D + D \ S \ D + H | \ D + W \ S \ D + D CODE>Je ne vois pas un moyen de faire cela en utilisant une expression pure regex. Essayez peut-être de fractionnement dans l'espace, puis vérifiez chaque composant séparément.
Donc, vous voulez une combinaison?
Merci à tous pour la réponse rapide ...
@Thegeneral, oui je veux une combinaison de nombre avec W, D et H ...
Voulez-vous une commande? ou w -> d -> h
@Thegeneral, oui ID W et D Existez, le W devrait venir en premier, il devrait venir dans une ordonnance de w d h
jour de la semaine d'heure code>