Question

J'utilise xVal pour valider mes formulaires dans asp.net MVC 1.0

Je ne sais pas pourquoi mon expression régulière ne valide pas correctement.

  • Finalité pas valider avec une valeur vide
  • Finalité pas valider avec la valeur de "1", "12", "123" ou "1234"
  • Il valide la valeur de "12345"
  • Il valide la valeur de "12345"
  • Il valide la valeur de "12345 -"
  • Il valide la valeur de "-1 12345"
  • Il valide la valeur de "12345 -12" ... etc

Pour un code postal J'attends un des deux motifs:

12345 ou 12345 -1234

Voici les deux regex j'ai essayé:

(\d{5})((( -)(\d{4}))?)

(\d{5})|(\d{5} -\d{4})

Voici ma classe pour MetaData xVal

[MetadataType(typeof(TIDProfileMetadata))]
public class TIDProfileStep
{
   public class TIDProfileMetadata
   {
       [Required(ErrorMessage = " [Required] ")]
       [RegularExpression(@"(\d{5})|(\d{5} -\d{4})", ErrorMessage = " Invalid Zip ")]
       public string Zip { get; set; }
   }
}

Voici ma page ASPX:

<% Html.BeginForm("Edit", "Profile", FormMethod.Post); %>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
   <td>
      <h6>Zip:</h6>
   </td>
   <td>
      <%= Html.TextBox("Profile.Zip")%>
   </td>
</tr>
<tr>
   <td>
      <input type="submit"/>
   </td> 
</tr>
</table>
<% Html.EndForm(); %>

<% Html.Telerik().ScriptRegistrar()
        .OnDocumentReady(() =>
   { %>
   <%= Html.ClientSideValidation<TIDProfileStep>("Profile").SuppressScriptTags() %>
<% }); %>
Était-ce utile?

La solution 2

Je ne mentionnais pas que je travaillais avec un plugin masque pour mon champ de saisie. Le plugin masque peut être trouvé .

Ainsi, sur la zone de texte si je devais remplir seulement les 5 premiers chiffres, puis onglet dans le champ suivant est validerait comme faux en raison du plugin masque que je l'ai utilisé. Le plugin masque, met dans un caractère underscore pour possiblities vides .... Ainsi, par exemple:

_____ -____ serait le masque qu'il mettrait dans le champ vide sur le focus. Si je remplis les 5 premiers chiffres que j'aurais:

12345 -____

Ensuite, si l'onglet I du champ suivant, le -____ est supprimé, mais le champ de saisie doit être onblur revalidé.

Alors, ce que je faisais était revalider le champ de saisie sur le flou et maintenant il fonctionne.

$('#Zip').blur(function() {
        $(this).validate();
});

J'utilise cette ^\d{5}( -\d{4})?$ regex

Autres conseils

Vous manque les points d'ancrage de début et de fin:

^\d{5}( -\d{4})?$

Sans ces éléments vous permettent une correspondance partielle. Le regex correspond à la 12345 -1 chaîne par \d{5}:. 12345 -1 et validation

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top