You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
using System;
|
|
using System.Globalization;
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
|
namespace BlazorApp.Helper
|
|
{
|
|
public class Utils
|
|
{
|
|
public bool IsValidEmail(string email)
|
|
{
|
|
|
|
//return false;
|
|
|
|
try
|
|
{
|
|
// Normalize the domain
|
|
email = Regex.Replace(email, @"(@)(.+)$", DomainMapper,
|
|
RegexOptions.None, TimeSpan.FromMilliseconds(200));
|
|
|
|
// Examines the domain part of the email and normalizes it.
|
|
string DomainMapper(Match match)
|
|
{
|
|
// Use IdnMapping class to convert Unicode domain names.
|
|
var idn = new IdnMapping();
|
|
|
|
// Pull out and process domain name (throws ArgumentException on invalid)
|
|
string domainName = idn.GetAscii(match.Groups[2].Value);
|
|
|
|
return match.Groups[1].Value + domainName;
|
|
}
|
|
}
|
|
catch (RegexMatchTimeoutException e)
|
|
{
|
|
return false;
|
|
}
|
|
catch (ArgumentException e)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
try
|
|
{
|
|
return Regex.IsMatch(email,
|
|
@"^[^@\s]+@[^@\s]+\.[^@\s]+$",
|
|
RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250));
|
|
}
|
|
catch (RegexMatchTimeoutException)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|