/Source/NETworkManager.Validators/IPv4SubnetmaskOrCIDRValidator.cs
https://github.com/BornToBeRoot/NETworkManager · C# · 30 lines · 23 code · 6 blank · 1 comment · 9 complexity · 6b2f675bcf49fec70ce2f1468f5536ae MD5 · raw file
- using System.Globalization;
- using System.Text.RegularExpressions;
- using System.Windows.Controls;
- using NETworkManager.Utilities;
- namespace NETworkManager.Validators
- {
- // ReSharper disable once InconsistentNaming
- public class IPv4SubnetmaskOrCIDRValidator : ValidationRule
- {
- public override ValidationResult Validate(object value, CultureInfo cultureInfo)
- {
- var subnetmaskOrCidr = value as string;
- if (subnetmaskOrCidr != null && Regex.IsMatch(subnetmaskOrCidr, RegexHelper.SubnetmaskRegex))
- return ValidationResult.ValidResult;
- if (subnetmaskOrCidr == null || !subnetmaskOrCidr.StartsWith("/"))
- return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
- if (!int.TryParse(subnetmaskOrCidr.TrimStart('/'), out var cidr))
- return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
- if (cidr >= 0 && cidr < 33)
- return ValidationResult.ValidResult;
- return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
- }
- }
- }