/** * FormValidation (https://formvalidation.io) * The best validation library for JavaScript * (c) 2013 - 2020 Nguyen Huu Phuoc */ import mod37And36 from '../algorithms/mod37And36'; import { Localization, ValidateInput, ValidateOptions, ValidateResult } from '../core/Core'; export default function grid() { return { /** * Validate GRId (Global Release Identifier) * @see http://en.wikipedia.org/wiki/Global_Release_Identifier */ validate(input: ValidateInput): ValidateResult { if (input.value === '') { return { valid: true }; } let v = input.value.toUpperCase(); if (!/^[GRID:]*([0-9A-Z]{2})[-\s]*([0-9A-Z]{5})[-\s]*([0-9A-Z]{10})[-\s]*([0-9A-Z]{1})$/g.test(v)) { return { valid: false }; } v = v.replace(/\s/g, '').replace(/-/g, ''); if ('GRID:' === v.substr(0, 5)) { v = v.substr(5); } return { valid: mod37And36(v) }; }, }; }