public override bool VisitPackage(JProperty package, string projectJsonPath) { var patterns = Enumerable.Empty <ValidationPattern>(); if (ValidationPatterns != null) { patterns = ValidationPatterns .Select(item => new ValidationPattern(item, Log)) .ToArray(); } string id = package.Name; string version; if (package.Value is JObject) { version = package.Value["version"].Value <string>(); } else if (package.Value is JValue) { version = package.Value.ToObject <string>(); } else { throw new ArgumentException(string.Format( "Unrecognized dependency element for {0} in {1}", package.Name, projectJsonPath)); } string dependencyMessage = string.Format( "{0} {1} in {2}", id, version, projectJsonPath); bool packageUpdated = false; foreach (var pattern in patterns) { packageUpdated |= pattern.VisitPackage( package, id, version, dependencyMessage, UpdateInvalidDependencies); } if (!packageUpdated && ProhibitFloatingDependencies && version.Contains('*')) { // A * dependency was found but it hasn't been fixed. It might not have been fixed // because UpdateInvalidDependencies = false or because a pattern didn't match it: // either way this is an error. Log.LogError("Floating dependency detected: {0}", dependencyMessage); } return(packageUpdated); }
public static bool Validate(string inputStr, ValidationPatterns pattern) { if (!string.IsNullOrEmpty(inputStr)) { Regex reg = new Regex(GetPatternString(pattern)); return reg.IsMatch(inputStr); } else return false; }
static string GetPatternString(ValidationPatterns pattern) { switch (pattern) { case ValidationPatterns.icq: { return @"([1-9])+(?:-?\d){4,}"; } case ValidationPatterns.creditcard: { return @"[0-9]{13,16}"; } case ValidationPatterns.english: { return @"^[a-zA-Z0-9]+$"; } case ValidationPatterns.url: { return @"^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$"; } case ValidationPatterns.IPv4: { return @"((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)"; } case ValidationPatterns.IPv6: { return @"((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)"; } case ValidationPatterns.name: { return @"^[a-zA-Z0-9-_\.]+$"; } case ValidationPatterns.email: { return @"^[a-zA-Z0-9-_\.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$"; } default: return null; } }