@jsbailey/reactive-form-validators
Version:
[](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators) [](https://gitter.im/rxweb-project/rxweb?utm_source=badge
102 lines (101 loc) • 10.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { RegExRule } from "./regex-rules";
/** @type {?} */
const ALPHABET = "alphabet";
/** @type {?} */
const DIGIT = "digit";
/** @type {?} */
const CONTAINS = "contains";
/** @type {?} */
const LOWERCASE = "lowerCase";
/** @type {?} */
const UPPERCASE = "upperCase";
/** @type {?} */
const SPECIAL_CHARACTER = "specialCharacter";
/** @type {?} */
const MIN_LENGTH = "minLength";
/** @type {?} */
const MAX_LENGTH = "maxLength";
export class RegexValidator {
/**
* @param {?} value
* @param {?} regex
* @return {?}
*/
static isExits(value, regex) {
return value.match(regex) != null;
}
/**
* @param {?} value
* @param {?} regex
* @return {?}
*/
static isValid(value, regex) {
return regex.test(value);
}
/**
* @param {?} value
* @return {?}
*/
static isNotBlank(value) {
return value != undefined && value != "" && value != null;
}
/**
* @param {?} passwordValidation
* @param {?} value
* @return {?}
*/
static isValidPassword(passwordValidation, value) {
/** @type {?} */
let isValid = false;
/** @type {?} */
let jObject = {};
/** @type {?} */
let keyName = "status";
/** @type {?} */
let objectProperties = Object.getOwnPropertyNames(passwordValidation);
for (let propertyName of objectProperties) {
switch (propertyName) {
case ALPHABET:
isValid = RegexValidator.isExits(value, RegExRule["alpha"]);
keyName = ALPHABET;
break;
case DIGIT:
isValid = RegexValidator.isValid(value, RegExRule["isDigitExits"]);
keyName = DIGIT;
break;
case CONTAINS:
isValid = value.indexOf(passwordValidation[CONTAINS]) != -1;
keyName = CONTAINS;
break;
case LOWERCASE:
isValid = RegexValidator.isValid(value, RegExRule["lowerCase"]);
keyName = LOWERCASE;
break;
case UPPERCASE:
isValid = RegexValidator.isValid(value, RegExRule["upperCase"]);
keyName = UPPERCASE;
break;
case SPECIAL_CHARACTER:
isValid = RegexValidator.isExits(value, RegExRule["specialCharacter"]);
keyName = SPECIAL_CHARACTER;
break;
case MIN_LENGTH:
isValid = value.length >= passwordValidation[propertyName];
keyName = MIN_LENGTH;
break;
case MAX_LENGTH:
isValid = value.length <= passwordValidation[propertyName];
keyName = MAX_LENGTH;
break;
}
if (!isValid)
break;
}
return { isValid: isValid, keyName: keyName };
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXgtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGpzYmFpbGV5L3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInV0aWwvcmVnZXgtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUcxQyxNQUFNLFFBQVEsR0FBVyxVQUFVLENBQUM7O0FBQ3BDLE1BQU0sS0FBSyxHQUFXLE9BQU8sQ0FBQzs7QUFDOUIsTUFBTSxRQUFRLEdBQVcsVUFBVSxDQUFDOztBQUNwQyxNQUFNLFNBQVMsR0FBVyxXQUFXLENBQUM7O0FBQ3RDLE1BQU0sU0FBUyxHQUFXLFdBQVcsQ0FBQzs7QUFDdEMsTUFBTSxpQkFBaUIsR0FBVyxrQkFBa0IsQ0FBQzs7QUFDckQsTUFBTSxVQUFVLEdBQVcsV0FBVyxDQUFDOztBQUN2QyxNQUFNLFVBQVUsR0FBVyxXQUFXLENBQUM7QUFHdkMsTUFBTTs7Ozs7O0lBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFVLEVBQUUsS0FBYTtRQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7S0FDckM7Ozs7OztJQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBVSxFQUFFLEtBQWE7UUFDcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDNUI7Ozs7O0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFVO1FBQ3hCLE1BQU0sQ0FBQyxLQUFLLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxFQUFFLElBQUksS0FBSyxJQUFJLElBQUksQ0FBRTtLQUM5RDs7Ozs7O0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxrQkFBc0MsRUFBRSxLQUFhOztRQUN4RSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7O1FBQ3BCLElBQUksT0FBTyxHQUEyQixFQUFFLENBQUM7O1FBQ3pDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQzs7UUFDdkIsSUFBSSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUNyRSxHQUFHLENBQUMsQ0FBQyxJQUFJLFlBQVksSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDbkIsS0FBSyxRQUFRO29CQUNULE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxTQUFTLFVBQU8sQ0FBQztvQkFDekQsT0FBTyxHQUFHLFFBQVEsQ0FBQztvQkFDbkIsS0FBSyxDQUFDO2dCQUNWLEtBQUssS0FBSztvQkFDTixPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxpQkFBYyxDQUFDO29CQUNoRSxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNoQixLQUFLLENBQUM7Z0JBQ1YsS0FBSyxRQUFRO29CQUNULE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQzVELE9BQU8sR0FBRyxRQUFRLENBQUM7b0JBQ25CLEtBQUssQ0FBQztnQkFDVixLQUFLLFNBQVM7b0JBQ1YsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsY0FBVyxDQUFDO29CQUM3RCxPQUFPLEdBQUcsU0FBUyxDQUFDO29CQUNwQixLQUFLLENBQUM7Z0JBQ1YsS0FBSyxTQUFTO29CQUNWLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxTQUFTLGNBQVcsQ0FBQztvQkFDN0QsT0FBTyxHQUFHLFNBQVMsQ0FBQztvQkFDcEIsS0FBSyxDQUFDO2dCQUNWLEtBQUssaUJBQWlCO29CQUNsQixPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxxQkFBa0IsQ0FBQztvQkFDcEUsT0FBTyxHQUFHLGlCQUFpQixDQUFDO29CQUM1QixLQUFLLENBQUM7Z0JBQ1YsS0FBSyxVQUFVO29CQUNYLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMzRCxPQUFPLEdBQUcsVUFBVSxDQUFDO29CQUNyQixLQUFLLENBQUM7Z0JBQ1YsS0FBSyxVQUFVO29CQUNYLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMzRCxPQUFPLEdBQUcsVUFBVSxDQUFDO29CQUNyQixLQUFLLENBQUM7YUFDYjtZQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNULEtBQUssQ0FBQztTQUNiO1FBQ0QsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUE7S0FDaEQ7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhc3N3b3JkVmFsaWRhdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvcGFzc3dvcmQtdmFsaWRhdGlvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBSZWdFeFJ1bGUgfSBmcm9tIFwiLi9yZWdleC1ydWxlc1wiO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1Db25maWcgfSBmcm9tIFwiLi9yZWFjdGl2ZS1mb3JtLWNvbmZpZ1wiO1xyXG5cclxuY29uc3QgQUxQSEFCRVQ6IHN0cmluZyA9IFwiYWxwaGFiZXRcIjtcclxuY29uc3QgRElHSVQ6IHN0cmluZyA9IFwiZGlnaXRcIjtcclxuY29uc3QgQ09OVEFJTlM6IHN0cmluZyA9IFwiY29udGFpbnNcIjtcclxuY29uc3QgTE9XRVJDQVNFOiBzdHJpbmcgPSBcImxvd2VyQ2FzZVwiO1xyXG5jb25zdCBVUFBFUkNBU0U6IHN0cmluZyA9IFwidXBwZXJDYXNlXCI7XHJcbmNvbnN0IFNQRUNJQUxfQ0hBUkFDVEVSOiBzdHJpbmcgPSBcInNwZWNpYWxDaGFyYWN0ZXJcIjtcclxuY29uc3QgTUlOX0xFTkdUSDogc3RyaW5nID0gXCJtaW5MZW5ndGhcIjtcclxuY29uc3QgTUFYX0xFTkdUSDogc3RyaW5nID0gXCJtYXhMZW5ndGhcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUmVnZXhWYWxpZGF0b3Ige1xyXG4gICAgc3RhdGljIGlzRXhpdHModmFsdWU6IGFueSwgcmVnZXg6IFJlZ0V4cCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXRjaChyZWdleCkgIT0gbnVsbDtcclxuICAgIH1cclxuICAgIHN0YXRpYyBpc1ZhbGlkKHZhbHVlOiBhbnksIHJlZ2V4OiBSZWdFeHApOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzTm90QmxhbmsodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSAhPSB1bmRlZmluZWQgJiYgdmFsdWUgIT0gXCJcIiAmJiB2YWx1ZSAhPSBudWxsIDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNWYWxpZFBhc3N3b3JkKHBhc3N3b3JkVmFsaWRhdGlvbjogUGFzc3dvcmRWYWxpZGF0aW9uLCB2YWx1ZTogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICAgICAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICBsZXQgak9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgICAgIGxldCBrZXlOYW1lID0gXCJzdGF0dXNcIjtcclxuICAgICAgICBsZXQgb2JqZWN0UHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHBhc3N3b3JkVmFsaWRhdGlvbilcclxuICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eU5hbWUgb2Ygb2JqZWN0UHJvcGVydGllcykge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5TmFtZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBBTFBIQUJFVDpcclxuICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gUmVnZXhWYWxpZGF0b3IuaXNFeGl0cyh2YWx1ZSwgUmVnRXhSdWxlLmFscGhhKTtcclxuICAgICAgICAgICAgICAgICAgICBrZXlOYW1lID0gQUxQSEFCRVQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIERJR0lUOlxyXG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBSZWdleFZhbGlkYXRvci5pc1ZhbGlkKHZhbHVlLCBSZWdFeFJ1bGUuaXNEaWdpdEV4aXRzKTtcclxuICAgICAgICAgICAgICAgICAgICBrZXlOYW1lID0gRElHSVQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENPTlRBSU5TOlxyXG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB2YWx1ZS5pbmRleE9mKHBhc3N3b3JkVmFsaWRhdGlvbltDT05UQUlOU10pICE9IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIGtleU5hbWUgPSBDT05UQUlOUztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgTE9XRVJDQVNFOlxyXG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBSZWdleFZhbGlkYXRvci5pc1ZhbGlkKHZhbHVlLCBSZWdFeFJ1bGUubG93ZXJDYXNlKTtcclxuICAgICAgICAgICAgICAgICAgICBrZXlOYW1lID0gTE9XRVJDQVNFO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBVUFBFUkNBU0U6XHJcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IFJlZ2V4VmFsaWRhdG9yLmlzVmFsaWQodmFsdWUsIFJlZ0V4UnVsZS51cHBlckNhc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGtleU5hbWUgPSBVUFBFUkNBU0U7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFNQRUNJQUxfQ0hBUkFDVEVSOlxyXG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBSZWdleFZhbGlkYXRvci5pc0V4aXRzKHZhbHVlLCBSZWdFeFJ1bGUuc3BlY2lhbENoYXJhY3Rlcik7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5TmFtZSA9IFNQRUNJQUxfQ0hBUkFDVEVSO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBNSU5fTEVOR1RIOlxyXG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB2YWx1ZS5sZW5ndGggPj0gcGFzc3dvcmRWYWxpZGF0aW9uW3Byb3BlcnR5TmFtZV07XHJcbiAgICAgICAgICAgICAgICAgICAga2V5TmFtZSA9IE1JTl9MRU5HVEg7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIE1BWF9MRU5HVEg6XHJcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IHZhbHVlLmxlbmd0aCA8PSBwYXNzd29yZFZhbGlkYXRpb25bcHJvcGVydHlOYW1lXTtcclxuICAgICAgICAgICAgICAgICAgICBrZXlOYW1lID0gTUFYX0xFTkdUSDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogaXNWYWxpZCwga2V5TmFtZToga2V5TmFtZSB9XHJcbiAgICB9XHJcbn1cclxuIl19