【问题标题】:Regular Expression Annotation Fails Despite Being Correct正则表达式注释尽管正确但仍失败
【发布时间】:2017-01-12 21:05:29
【问题描述】:

在我的模型中,我有以下内容:

[Required(ErrorMessage = "First name is required.")]
[Display(Name = "First Name")]
[MaxLength(50)]
[RegularExpression(@"/^[A-z]+$/", ErrorMessage = "Only alphabet characters are allowed.")]
public string FirstName { get; set; }

在表单中,无论我在其中输入什么,它都无法通过检查。我希望它只是确保只有字母,没有数字或特殊字符。

这不是重复的,因为引用的帖子与数据注释无关。它们是两种不同的上下文。

【问题讨论】:

标签: c# regex asp.net-core-mvc


【解决方案1】:

您需要删除正则表达式分隔符(未在 .NET 正则表达式中使用,因此被视为文字斜杠)并将 A-z 替换为 A-Za-z(参见 Why is this regex allowing a caret?)。

使用

@"^[A-Za-z]+$"

【讨论】:

  • @SergeyBerezovskiy:接受的答案there 是错误的。此外,/.../ 是一种常见的正则表达式书写形式,在 .NET 中,/ 在模式中被解析为文字符号。
  • 嗯..需要检查
  • 如果 OP 不使用我的建议,[A-z] 会导致另一个问题。
  • 另请注意"(?i)^[a-z]+$" 可以工作(添加不区分大小写的标志),或者如果您想支持英语以外的语言,"^\p{L}+$"
猜你喜欢
  • 2014-07-26
  • 2014-12-17
  • 2014-01-29
  • 2022-01-11
  • 2018-04-24
  • 2018-09-03
  • 2020-06-13
  • 1970-01-01
  • 2012-10-26
相关资源
最近更新 更多