26 lines
773 B
C#
26 lines
773 B
C#
using System.Text.RegularExpressions;
|
||
using FluentValidation;
|
||
using FluentValidation.Results;
|
||
using ValueOf;
|
||
|
||
namespace Customers.Api.Domain.Common;
|
||
|
||
public class EmailAddress : ValueOf<string, EmailAddress>
|
||
{
|
||
private static readonly Regex EmailRegex =
|
||
new("^[\\w!#$%&’*+/=?`{|}~^-]+(?:\\.[\\w!#$%&’*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$",
|
||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||
|
||
protected override void Validate()
|
||
{
|
||
if (!EmailRegex.IsMatch(Value))
|
||
{
|
||
var message = $"{Value} is not a valid email address";
|
||
throw new ValidationException(message, new []
|
||
{
|
||
new ValidationFailure(nameof(EmailAddress), message)
|
||
});
|
||
}
|
||
}
|
||
}
|