使用数据注释验证获取非法字符

时间:2017-01-19 18:46:49

标签: c# regex validation data-annotations

我正在使用数据注释来检测网页文本框中的非法字符。

[RegularExpression(Constants.LegalName, ErrorMessage = "Full name is invalid.")]
public string FullName {
    get;
    set;
}

const string LegalName= @"^[a-zA-Z '-.]*$";

我使用以下代码验证字段

Validator.TryValidateObject(
    inputFieldValue, 
    new ValidationContext(inputFieldValue, null, null), 
    result, 
    true);

如果检测到任何非法字符,结果将出现“全名无效”的错误字符串。

如何获取字段中输入的非法字符列表?字符串inputFieldValue将包含用户在字段中键入的内容。如何使用@"^[a-zA-Z '-.]*$";

这样的reg表达式获取所有非法字符的列表

感谢。

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以使用TryValidateObject获取它。你必须单独找到它们:

const string ValidCharPattern = @"[a-zA-Z '-.]";

const string LegalName= @"^" + ValidCharPattern + @"*$";


var invalidChars = Regex
    .Replace(
        input: inputFieldValue,
        pattern: ValidCharPattern,
        replacement: String.Empty)
    .Distinct();