0
votes

Espaces blouses et expression de regex

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


4 commentaires

Votre méthode ne renvoie aucune valeur. Vous devez utiliser retour Regex.Amatch (S, @ "Pattern_Here"); .


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?


3 Réponses :


1
votes

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);
}


0 commentaires

0
votes

Vous avez deux types de morceaux valides: xxx pré>

faisons une combinaison arbitraire d'entre eux (notez ancrages em> ^ code> et $ code> - nous voulons tout em> chaîne correspondoir) p> xxx pré>

enfin, invalide em> signifie em> pas Correspondance EM>: P>

CODE: STRT> 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


1 commentaires

Merci tout le monde. Appris quelque chose de nouveau à propos de Regex de vos réponses.



0
votes

Je suggère d'utiliser

public bool ContainsInvalidChars(string s)
{
    return Regex.IsMatch(s, @"(?!\s/\s)(?<!\s/(?=\s))[^a-zA-Z0-9/,.-]");
}


0 commentaires