在MVC中同时使用regex检查空和数字输入



首先,我想检查如果输入为null,是否显示错误,如果输入有数字值,是否也显示错误。。。。那么这是什么模式呢?我希望你能理解我的问题谢谢!

[RegularExpression(@"^[D]$", ErrorMessage = "Input Cannot be empty and must have Alphabets only")]
public string FirstName { get; set; }

您的解决方案不适合您,因为^[D]$模式匹配的字符串只包含除数字之外的单个字符。请注意,[]可以安全地删除,因为只有当它们具有多个字符/字符范围时,字符类才有意义。

我建议

[RegularExpression(@"^D+$", ErrorMessage = "Input can have no digits.")]
public string FirstName { get; set; }

@"^D+$"模式只匹配其中没有数字的字符串。请注意,RegularExpressionAttribute模式应该始终匹配整个输入,因此^$锚在这里很好使用。

^d*$将匹配任何为空或仅由数字组成的输入值。或者,D将匹配具有至少一个非数字字符的任何输入值。例如,在Javascript中:

console.log(/^d*$/.test(''));
console.log(/^d*$/.test('123'));
console.log(/^d*$/.test('x1'));
console.log(/D/.test(''));
console.log(/D/.test('123'));
console.log(/D/.test('x1'));

[Required(ErrorMessage = "{0} cannot be empty")]
[RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "{0} must have Alphabets only")]
[Display(Name = "First name")]
public string FirstName { get; set; }

如果输入为空,则显示错误消息:

名字不能为空

如果输入值包含非字母字符:

名字必须只有字母


如果您想允许空值,您可以尝试:

[RegularExpression(@"(^$)|(^[a-zA-Z]+$)", ErrorMessage = "{0} must have Alphabets only")]

(^$)允许空字符串。然后,如果它不是空的,继续使用模式(^[a-zA-Z]+$)(仅限字母字符(进行检查。