Je dois déterminer si une chaîne contient des caractères non valides. Les critères sont qu'il ne devrait avoir que [AZ] code>,
[AZ] code>,
[0-9] code> et
[/, - \] code> caractères et tout ce qui est d'autre est invalide em>. En outre, caractères suivis par l'espace suivi d'un espace suivi de l'espace suivi de caractères em> est valide em>. La regex que j'ai ci-dessous prend soin des premiers critères, mais j'ai du mal à la seconde. J'ai essayé de nombreuses combinaisons, quelque chose comme ceux-ci, mais pas de succès.
public bool ContainsInvalidChars(string s)
{
return new Regex(@"[^a-zA-Z0-9/,.-][@"\s/\s"]).IsMatch(s);
}
Examples of input strings:
below is Valid
CSU,USD,6230.67,705RA0 / 2YKMP,5/11/2020,5/11/2020,VM
below is invalid
CSU,USD,6230.67,705RA0 /2YKMP,5/11/2020,5/11/2020,VM
below is invalid
CSU, USD,6230.67,705RA0 / 2YKMP,5/11/2020,5/11/2020,VM
3 Réponses :
Vous pouvez utiliser la classe de caractères et répéter 0 fois plus de fois dans un groupe commençant par l'espace / code> espace et encore la classe de caractères.
public bool ContainsInvalidChars(string s)
{
return new Regex(@"^[a-zA-Z0-9/,.-]+(?: / [a-zA-Z0-9/,.-]+)*$").IsMatch(s);
}
Vous avez deux types de morceaux valides: faisons une combinaison arbitraire d'entre eux (notez ancrages em> enfin, invalide em> signifie em> pas Correspondance EM>: P> ^ code> et
$ code> - nous voulons tout em> chaîne correspondoir) p>
CSU,USD,6230.67,705RA0 / 2YKMP,5/11/2020,5/11/2020,VM :: Valid
CSU,USD,6230.67,705RA0 /2YKMP,5/11/2020,5/11/2020,VM :: Invalid
CSU, USD,6230.67,705RA0 / 2YKMP,5/11/2020,5/11/2020,VM :: Invalid
Merci tout le monde. Appris quelque chose de nouveau à propos de Regex de vos réponses.
Je suggère d'utiliser
public bool ContainsInvalidChars(string s) { return Regex.IsMatch(s, @"(?!\s/\s)(?<!\s/(?=\s))[^a-zA-Z0-9/,.-]"); }
Votre méthode ne renvoie aucune valeur. Vous devez utiliser
retour Regex.Amatch (S, @ "Pattern_Here"); Code>.
Essayez
retour regex.Amatch (S, @ "(?! \ s / \ s) (?
ressemble à x / y pour moi. OMI Utilisez un analyseur CSV Buily Catégorie et coupez le champ. Un espace devant une valeur ne doit pas suffire à faire une ligne invalide.
Avez-vous essayé mon approche?