1 using System.Text.RegularExpressions;
2 using Hammock.Specifications;
4 namespace Hammock.Validation
6 public class ValidEmailSpecification : HammockSpecification<string>
8 // Accepts names, i.e. John Smith <john@johnsmith.com>
9 private static readonly Regex _names =
11 @"\w*<([-_a-z0-9'+*$^&%=~!?{}]+(?:\.[-_a-z0-9'+*$^&%=~!?{}]+)*@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d+)?)>",
12 #if !SL4 && !MonoTouch
13 RegexOptions.Compiled |
15 RegexOptions.IgnoreCase
18 // Just an email address
19 private static readonly Regex _explicit =
21 @"^[-_a-z0-9'+*$^&%=~!?{}]+(?:\.[-_a-z0-9'+*$^&%=~!?{}]+)*@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d+)?$",
22 #if !SL4 && !MonoTouch
23 RegexOptions.Compiled |
25 RegexOptions.IgnoreCase
28 public override bool IsSatisfiedBy(string instance)
30 var result = _explicit.IsMatch(instance) || _names.IsMatch(instance);