DateTimeFormatValidator
Validator for DateTime format.
using Newtonsoft.Json.Linq;
using System;
using System.Globalization;
namespace NJsonSchema.Validation.FormatValidators
{
public class DateTimeFormatValidator : IFormatValidator
{
private readonly string[] _acceptableFormats = new string[15] {
"yyyy-MM-dd'T'HH:mm:ss.FFFFFFFK",
"yyyy-MM-dd' 'HH:mm:ss.FFFFFFFK",
"yyyy-MM-dd'T'HH:mm:ssK",
"yyyy-MM-dd' 'HH:mm:ssK",
"yyyy-MM-dd'T'HH:mm:ss",
"yyyy-MM-dd' 'HH:mm:ss",
"yyyy-MM-dd'T'HH:mm",
"yyyy-MM-dd' 'HH:mm",
"yyyy-MM-dd'T'HH",
"yyyy-MM-dd' 'HH",
"yyyy-MM-dd",
"yyyy-MM-dd",
"yyyyMMdd",
"yyyy-MM",
"yyyy"
};
public string Format { get; } = "date-time";
public ValidationErrorKind ValidationErrorKind { get; } = ValidationErrorKind.DateTimeExpected;
public bool IsValid(string value, JTokenType tokenType)
{
DateTimeOffset result;
DateTimeOffset result;
if (tokenType != JTokenType.Date)
return DateTimeOffset.TryParseExact(value, _acceptableFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result);
return true;
}
}
}
namespace NJsonSchema.Validation.FormatValidators
{
public class HostnameFormatValidator : IFormatValidator
{
private const string HostnameExpression = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$";
public string Format { get; } = "hostname";
public ValidationErrorKind ValidationErrorKind { get; } = ValidationErrorKind.HostnameExpected;
public bool IsValid(string value, JTokenType tokenType)
{
return System.Text.RegularExpressions.Regex.IsMatch(value, "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
}
}
}