我在从类中读取静态字符串时遇到问题,该字符串用于验证我的模式。 当我调试时,我看到花括号被放入方括号中。 这是我的班级:
public static class ArticleConstant
{
public const int LengthOfArticleNumber = 9;
public static readonly string PatternArticleNumber = "^[A-Z0-9]{9}$";
}
我也试过
public static readonly string PatternArticleNumber = "^[A-Z0-9]\{9\}$";
public static readonly string PatternArticleNumber = "^[A-Z0-9]{{9}}$";
public static readonly string PatternArticleNumber = @"^[A-Z0-9]{9}$";
public static readonly string PatternArticleNumber = $"^[A-Z0-9]{9}$";
但它都没有奏效。 这是我的实际验证规则:
this.RuleFor(article => article.Number)
.NotEmpty()
.WithLocalizedMessage(() => ValidationErrorMessages.IsRequired)
.Length(ArticleConstant.LengthOfArticleNumber)
.WithLocalizedMessage(() => ValidationErrorMessages.DefinedSized)
.Matches(ArticleConstant.PatternArticleNumber)
.WithLocalizedMessage(() => ValidationErrorMessages.MustNotContainAnySpecialCharacter);
当我直接在Matches函数中输入模式时,一切都像预期的一样。
有人可以向我解释这里发生了什么吗?
谢谢, 大卫
答案 0 :(得分:0)
我现在使用
解决了这个问题public const string PatternArticleNumber = "^[A-Z0-9]{9}$";
似乎static readonly
正在做某事,因此验证失败了。