.NET regex spécifiques .net C# dataannotations
J'ai une expression régulière que j'essaie de comprendre pour un .NET Annotation de Données de Validation du modèle que j'utilise. Actuellement, il ressemble à ceci
[RegularExpression("^((?!City)[a-zA-Z '])+$", ErrorMessage = "City is required and must be properly formatted.")]
La première moitié de cette regex est de rendre compte de la Ville, la seconde moitié est de s'assurer que ses seulement les lettres et les espaces.
La valeur par défaut pour la zone de texte d'entrée est de la Ville, il suffit donc de "Ville de" je ne peux pas passer de validation. Je n'arrive pas à obtenir la première section de cette regex pour ces cas passent.
Cityville
City City
Jersey City
Arizona City
Mais ce cas ne pas passer:
City
Toute aide serait grandement appréciée.
*MODIFIER*
Celui-ci fait l'affaire:
^((?!^La ville de dollars)[a-zA-Z])+$
J'ai mis à jour tous mes validation pour en tenir compte. Juste au cas où vous voulez voir ce que je fais. Ici, si le code de l'ensemble de données de validation du modèle que j'utilise. (mis à jour avec la bonne regex)
public class FormModel {
[Required(ErrorMessage = "First Name is a Required field.")]
[DataType(DataType.Text)]
[Display(Order = 1, Name = "FirstName")]
[RegularExpression("^((?!^First Name$)[a-zA-Z '])+$", ErrorMessage = "First name is required and must be properly formatted.")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last Name is a Required field.")]
[DataType(DataType.Text)]
[Display(Order = 2, Name = "LastName")]
[RegularExpression("^((?!^Last Name$)[a-zA-Z '])+$", ErrorMessage = "Last name is required and must be properly formatted.")]
public string LastName { get; set; }
[Required(ErrorMessage = "Address is a Required field.")]
[DataType(DataType.Text)]
[Display(Order = 3, Name = "Address")]
[RegularExpression("^((?!^Address$)[0-9A-Za-z #.,])+$", ErrorMessage = "Address is required and must be properly formatted.")]
public string Address { get; set; }
[DataType(DataType.Text)]
[Display(Order = 4, Name = "Address2")]
public string Address2 { get; set; }
[Required(ErrorMessage = "City is a Required field.")]
[DataType(DataType.Text)]
[RegularExpression("^((?!^City$)[a-zA-Z '])+$", ErrorMessage = "City is required and must be properly formatted.")]
[Display(Order = 6, Name = "City")]
public string City { get; set; }
[Required( ErrorMessage = "State is a Required field." )]
[DataType( DataType.Text )]
[Display( Order = 7, Name = "State" )]
public IEnumerable<String> State { get; set; }
[Required( ErrorMessage = "Zip is a Required field." )]
[DataType( DataType.Text )]
[RegularExpression( "\\d{5}",
ErrorMessage = "Zip Code is required and must be properly formatted.")]
[Display( Order = 8, Name = "Zip" )]
public String Zip { get; set; }
[Required( ErrorMessage = "Phone is a Required field." )]
[DataType( DataType.PhoneNumber )]
[RegularExpression( "^[01]?[- .]?\\(?[2-9]\\d{2}\\)?[- .]?\\d{3}[- .]?\\d{4}$",
ErrorMessage = "Phone is required and must be properly formatted.")]
[Display( Order = 9, Name = "Phone" )]
public string Phone { get; set; }
[Required( ErrorMessage = "Email is a Required field." )]
[DataType( DataType.EmailAddress )]
[RegularExpression( "^[A-Za-z0-9._%+-]*@[A-Za-z0-9.-]*\\.[A-Za-z0-9-]{2,}$",
ErrorMessage = "Email is required and must be properly formatted.")]
[Display( Order = 10, Name = "Email" )]
public string Email { get; set; }
OriginalL'auteur Chris Limina | 2013-05-28
Vous devez vous connecter pour publier un commentaire.
Essayez ceci pour l'expression régulière -
^((?!^City$)[a-zA-Z '])+$
Pour faire un négatif case à cocher pour "Ville", j'ai ajouté un début (^) & ( $ ) des personnages de la Ville.
Je l'ai testé à http://regex101.com/r/bF4bZ3 et il semble que cela fonctionne si je suis la compréhension de l'exigence correctement.
Vous devez marquer ce que l'on a accepté de répondre, s'il résolu votre problème.
OriginalL'auteur Sridhar Voorakkara
(?!City)
signifieCity
Zéro Largeur d'Anticipation Négatif, donc,^((?!City)[a-zA-Z '])+$
signifie:City
Ici est de savoir comment interdire
City
:Démo
OriginalL'auteur Ahmed KRAIEM
C'est en fait une petite erreur de votre part. Changer votre Regex:
Et vous aurez l'effet désiré. Fondamentalement, le + signifie une ou plusieurs fois, et puisque vous aviez l'ENSEMBLE de l'expression entre crochets, qui devaient se produire une ou plusieurs fois, il va trouver la "Ville" match à n'importe quel point de la chaîne... Cela dit, en anglais: Pas de "Ville", et les lettres et les espaces ou des guillemets simples, une ou plusieurs fois.
Un bon outil pour tester la Regex est Regex Héros: http://regexhero.net/tester
City City
. Vous avez besoin d'un$
dans le look de l'avant pour vous assurer qu'il n'y a rien après la Ville.Vous avez raison. Modifié.
OriginalL'auteur Haney
Négatif correspondant à des expressions régulières est généralement une mauvaise idée, il est tout simplement pas conçu de cette façon. La meilleure méthode serait à vérifier:
Et d'annuler l'épreuve. Dans ce cas, vous n'avez pas vraiment une option pour le faire.
Vous êtes vraiment proche, il vous suffit de déplacer vos ancres dans le négatif d'anticipation, et de donner à la chaîne d'une longueur minimale.
Cela va correspondre à quelque chose qui est de 4 caractères ou plus qui n'est pas "Ville".
Sans le min longueur de la "ville" de "Ville" sera un match qui ne sera pas vous aider.
Vous pouvez réduire la longueur minimale de 3 en ajoutant un coup d'oeil derrière si vous le souhaitez.
OriginalL'auteur Hunter Lewis
D'autres réponses vous ont donné de l'aide à l'expression régulière que vous avez demandé. Je vais commenter un peu différente de l'aspect - la valeur par défaut devrait être quelque chose de significatif, ou rien du tout (la"Ville" est une mauvaise valeur par défaut).
Ce que vous avez probablement voulu faire était de mettre de l'espace réservé de texte, qui disparaît dès que vous entrez dans la zone de texte. Vous pouvez faire cela avec le Invite propriété de Affichage attribut si vous utilisez NET 4.5 - voir cette réponse pour plus de détails.
N'utilisez pas une fausse valeur par défaut signifie que vous pouvez simplement utiliser
[Required]
et les utilisateurs devront saisir de quelque chose, et les arrêts que vous avez besoin de garder une trace de ce que vos fausses valeurs par défaut sont.Juste de lancer une autre clé dans les travaux, la "Ville" est un valide le nom d'un lieu - il y a deux villages appelés de la Ville dans le pays de Galles et une zone à Zurich!
OriginalL'auteur Richard