【发布时间】:2010-11-09 21:31:13
【问题描述】:
在我正在使用的系统上,我们有一个 Password 类,它通过在以下条件下抛出异常来进行验证:
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.");
}
}
如果我要在 JavaScript 中为 hasDigit、hasSpecialCharater 和 hasUpperCase 编写同样的检查,它会是什么样子?
JavaScript 没有这些相同的字符原型,所以我必须使用正则表达式,不是吗?
【问题讨论】:
-
Char.IsSymbol() 的实现并非易事。 (我刚刚使用 RedGate 反射器查看了 mscorlib.dll。)如果您希望 javascript 和 C# 实现精确匹配,最好在客户端和服务器上使用相同的正则表达式。
标签: c# javascript html regex