Sur le système, je travaille avec, nous avons une classe de mot de passe qui valide en lançant des exceptions dans les conditions suivantes:Validation du mot de passe en JavaScript; RegEx
public Password(string password)
: base(password)
{
// Must contain digit, special character, or uppercase character
var charArray = password.ToCharArray();
var hasDigit = charArray.Select(c => char.IsDigit(c)).Any();
var hasSpecialCharacter = charArray.Select(c => char.IsSymbol(c)).Any();
var hasUpperCase = charArray.Select(c => char.IsUpper(c)).Any();
if (!hasDigit && !hasSpecialCharacter && !hasUpperCase)
{
throw new ArgumentOutOfRangeException
("Must contain at least one digit, symbol, or upper-case letter.");
}
}
Si je devais écrire ce même chèque hasDigit, hasSpecialCharater et hasUpperCase en JavaScript, à quoi cela ressemblerait-il?
JavaScript n'a pas ces mêmes prototypes de caractères, donc je dois utiliser des expressions régulières, non?
Le Char.IsSymbol() n'est pas n-trivial à implémenter. (J'ai juste jeté un coup d'oeil dans le mscorlib.dll utilisant le réflecteur de RedGate.) Si vous voulez que vos implémentations de javascript et de C# correspondent exactement, vous feriez mieux d'employer la même expression régulière sur le client et le serveur. – dana