Je sais que cela a été répondu il y a longtemps, et c'est la meilleure série de réponses parmi d'autres dupliquer des questions. Voici une alternative à l'aide d'un CustomValidator, quand vraiment besoin de l'insensibilité à la casse côté serveur et côté client; et le Haut/bas [A-Za-z] char approche est de trop.
Cette mélanges divers autres réponses, utilisant le serveur-côté RegEx objet côté client et de la syntaxe javascript.
CustomValidator:
<asp:CustomValidator ID="cvWeight" runat="server" ControlToValidate="txtWeight"
OnServerValidate="cvWeight_Validate" ClientValidationFunction="cvWeight_Validate"
ValidateEmptyText="true" Text="*" ErrorMessage="Invalid entry." />
Code derrière:
protected void cvWeight_Validate(object sender, ServerValidateEventArgs args)
{
Regex re = new Regex(@"^[0-9]*\s*(lbs|kg|kgs)$", RegexOptions.IgnoreCase);
args.IsValid = re.IsMatch(args.Value);
}
La validation côté Client de la fonction:
function cvWeight_Validate(sender, args) {
var reWeight = /^[0-9]*\s*(lbs|kg|kgs)$/i;
args.IsValid = reWeight.test(args);
}
Cela fonctionne bien pour moi, sauf lors de l'utilisation d'un ValidationSummary. Sur la validation côté client, l'erreur *
montre, mais je ne peux pas obtenir le message d'erreur à afficher dans le résumé. Le résumé s'affiche uniquement lorsqu'il est soumis. Je pense que c'est censé afficher; j'ai un mix de mise à jour des panneaux et de l'héritage de code, ce qui peut avoir des problèmes.