import { IValidationRule } from '../interfaces/validationRule'; /** * rule for required. */ export class PhoneValidationRule implements IValidationRule { /** * init rule * * @param message */ constructor(public propertyName: string, public message: string) { } /** * action key. * * @returns {string} */ public get attribute(): string { return 'phone'; } /** * validate action. * * @param value */ public validate(entity: any, value: any): Promise { let promise: Promise = new Promise((resolve) => { // https://stackoverflow.com/a/123666 let regex = /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/; resolve(value.match(regex)); }); return promise; } }