Добавьте файлы проекта.
This commit is contained in:
43
ArgumentsToolkit.Validation/Validations/RegexAttribute.cs
Normal file
43
ArgumentsToolkit.Validation/Validations/RegexAttribute.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace ArgumentsToolkit;
|
||||
|
||||
public partial class RangeAttribute
|
||||
{
|
||||
/// <summary>
|
||||
/// Атрибут для проверки строкового значения по регулярному выражению.
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Property)]
|
||||
public class RegexAttribute : ValidationAttribute
|
||||
{
|
||||
/// <summary>
|
||||
/// Шаблон регулярного выражения.
|
||||
/// </summary>
|
||||
public string Pattern { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Создаёт новый атрибут регулярного выражения.
|
||||
/// </summary>
|
||||
/// <param name="pattern">Регулярное выражение для проверки.</param>
|
||||
public RegexAttribute(string pattern)
|
||||
{
|
||||
Pattern = pattern;
|
||||
}
|
||||
|
||||
public override string ErrorTemplate { get; set; } = "--{0}: значение {1} не соответствует регулярному выражению '{2}'";
|
||||
|
||||
public override bool Validate(object? value)
|
||||
{
|
||||
if (value is string s)
|
||||
return Regex.IsMatch(s, Pattern);
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
public override string GetErrorMessage(string optionName, object? value)
|
||||
{
|
||||
return string.Format(ErrorTemplate, optionName, value, Pattern);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user