2017-01-19 3 views
0

Я использую аннотацию данных для обнаружения незаконных символов в текстовом поле веб-страницы.Получить незаконные символы с проверкой аннотаций данных

[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 будет иметь то, что пользователь вводил в поле. Как я могу получить список всех незаконных символов с помощью выражения reg, например @"^[a-zA-Z '-.]*$";

Спасибо.

+0

Почему бы не указать, какие символы действительны в сообщении, а не пытаться найти и поместить недопустимые сообщения? – juharr

ответ

0

Я не уверен, что вы можете получить его с помощью TryValidateObject. Вы должны найти их отдельно:

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

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


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