在MVC中同时使用正则表达式检查空白和数字输入

时间:2018-11-19 23:20:30

标签: asp.net regex

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

[RegularExpression(@"^[\D]$", ErrorMessage = "Input Cannot be empty and must have Alphabets only")]

public string FirstName { get; set; }

3 个答案:

答案 0 :(得分:1)

^\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'));

答案 1 :(得分:1)

您的解决方案对您不起作用,因为^[\D]$模式与仅包含单个字符而不是数字的字符串匹配。请注意,[]可以安全地删除,因为字符类仅在它们具有多个char / char范围时才有意义。

我建议

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

@"^\D+$"模式仅匹配其中没有数字的字符串。请注意,RegularExpressionAttribute模式应始终与整个输入匹配,因此^$锚点可在此处很好地使用。

答案 2 :(得分:1)

[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]+$)(仅字母字符)。