UNPKG

@terminus/ngx-tools

Version:

[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github

241 lines (222 loc) 9.23 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define('@terminus/ngx-tools/regex', ['exports'], factory) : (global = global || self, factory((global.terminus = global.terminus || {}, global.terminus['ngx-tools'] = global.terminus['ngx-tools'] || {}, global.terminus['ngx-tools'].regex = {}))); }(this, (function (exports) { 'use strict'; /** * Define a regex to validate a credit card number * * Visa, MasterCard, American Express, Diners Club, Discover, JCB */ // eslint-disable-next-line max-len var creditCardRegex = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/; /** * Define a regex to verify a date * * Matches `3/7/18`, `3-7-18` and `03/07/2018` */ var dateRegex = /^(0?[1-9]|1[012])[- \/.](0?[1-9]|[12][0-9]|3[01])[- \/.](19|20)?\d\d$/; /** * Define a regex to validate an email address */ // eslint-disable-next-line max-len var emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; /** * Define a regex to validate a string contains at least one lowercase letter */ var containsLowercaseRegex = /(.*[a-z].*)/; /** * Create a regex that requires a minimum amount of lowercase characters * * @example * const reg = createContainsLowercaseRegex(3); * reg.test('aBC#1d') // Returns false * reg.test('aBC#12D') // Returns true * * @param minimum - The minimum amount of lowercase characters required * @returns The regex */ var createContainsLowercaseRegex = function (minimum) { return new RegExp("(.*[a-z].*){" + minimum + ",}"); }; /** * Define a regex to validate a string contains at least one uppercase letter */ var containsUppercaseRegex = /(.*[A-Z].*)/; /** * Create a regex that requires a minimum amount of uppercase characters * * @example * const reg = createContainsUppercaseRegex(2); * reg.test('aBc#1d') // Returns false * reg.test('Abc#12D') // Returns true * * @param minUppercaseCount - The minimum amount of uppercase characters required * @returns The regex */ var createContainsUppercaseRegex = function (minUppercaseCount) { return new RegExp("(.*[A-Z].*){" + minUppercaseCount + ",}"); }; /** * Define a regex to validate a string contains only letters */ var onlyLettersRegex = /^[a-zA-Z]+$/; /** * Define a regex to validate a string contains at least one number */ var containsNumbersRegex = /(.*([0-9]+\.?[0-9]*).*)/; /** * Create a regex that requires a minimum amount of numbers * * @example * const reg = createContainsNumbersRegex(2); * reg.test('abc#1d') // Returns false * reg.test('abc#12d') // Returns true * * @param minimum - The minimum amount of number characters required * @returns The regex */ var createContainsNumbersRegex = function (minimum) { return new RegExp("(.*([0-9]+.?[0-9]*).*){" + minimum + ",}"); }; /** * Define a regex to validate a string contains only numbers */ var onlyNumbersRegex = /^-?(\d+\.?\d*)$|(\d*\.?\d+)$/; /** * Define a regex to validate an email address * * * {6,100} - Assert password is between 6 and 100 characters * (?=.*[0-9]) - Assert a string has at least one number */ var passwordRegex = /^(?=.*[0-9])[a-zA-Z0-9!@#$%^&*]{6,100}$/; /** * Define a regex to validate US phone numbers */ var usaPhoneRegex = /\D*([2-9]\d{2})(\D*)([2-9]\d{2})(\D*)(\d{4})\D*/; /** * Define a regex to verify a US postal code * * Matches `12345` and `12345-1234` */ var usaPostalRegex = /^[0-9]{5}(-[0-9]{4})?$/; /** * Define a regex to validate a string contains at least one special character * * Allowed special characters: !, @, #, $, %, ^, &, *, (, ), -, _ */ var containsSpecialCharacterRegex = /.*(?:[!@#$%^&*_=+()-].*)/; /** * Create a regex that requires a minimum amount of numbers * * @example * const reg = createContainsSpecialCharacterRegex(2); * reg.test('abc1d') // Returns false * reg.test('a^bc$d') // Returns true * * @param minimum - The minimum amount of number characters required * @returns The regex */ var createContainsSpecialCharacterRegex = function (minimum) { return new RegExp(".*(?:[!@#$%^&*_=+()-].*){" + minimum + ",}"); }; /** * Define a regex to validate a URL * * Discussion: https://gist.github.com/dperini/729294 * NOTE: This is identical to our standard URL regex with the exception that the protocol is optional. */ var urlOptionalProtocolRegex = new RegExp('^' // protocol identifier + '(?:(?:https?|ftp)://)?' // user:pass authentication + '(?:\\S+(?::\\S*)?@)?' + '(?:' // IP address exclusion // private & local networks + '(?!(?:10|127)(?:\\.\\d{1,3}){3})' + '(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})' + '(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})' // IP address dotted notation octets // excludes loopback network 0.0.0.0 // excludes reserved space >= 224.0.0.0 // excludes network & broacast addresses // (first & last IP address of each class) + '(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])' + '(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}' + '(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))' + '|' // host name + '(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)' // domain name + '(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*' // TLD identifier + '(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))' // TLD may end with dot + '\\.?' + ')' // port number + '(?::\\d{2,5})?' // resource path + '(?:[/?#]\\S*)?' + '$', 'i'); /** * Define a regex to validate a URL * * Discussion: https://gist.github.com/dperini/729294 */ var urlRegex = new RegExp('^' // protocol identifier + '(?:(?:https?|ftp)://)' // user:pass authentication + '(?:\\S+(?::\\S*)?@)?' + '(?:' // IP address exclusion // private & local networks + '(?!(?:10|127)(?:\\.\\d{1,3}){3})' + '(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})' + '(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})' // IP address dotted notation octets // excludes loopback network 0.0.0.0 // excludes reserved space >= 224.0.0.0 // excludes network & broacast addresses // (first & last IP address of each class) + '(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])' + '(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}' + '(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))' + '|' // host name + '(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)' // domain name + '(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*' // TLD identifier + '(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))' // TLD may end with dot + '\\.?' + ')' // port number + '(?::\\d{2,5})?' // resource path + '(?:[/?#]\\S*)?' + '$', 'i'); /** * Define a regex to test for a canonically formatted UUID that is Version 1 through 5 and is the appropriate Variant as per RFC4122. * * Matches: `f4ee5eed-ed19-3681-713e-907a23ed7858` */ var uuidRegex = new RegExp(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/); exports.containsLowercaseRegex = containsLowercaseRegex; exports.containsNumbersRegex = containsNumbersRegex; exports.containsSpecialCharacterRegex = containsSpecialCharacterRegex; exports.containsUppercaseRegex = containsUppercaseRegex; exports.createContainsLowercaseRegex = createContainsLowercaseRegex; exports.createContainsNumbersRegex = createContainsNumbersRegex; exports.createContainsSpecialCharacterRegex = createContainsSpecialCharacterRegex; exports.createContainsUppercaseRegex = createContainsUppercaseRegex; exports.creditCardRegex = creditCardRegex; exports.dateRegex = dateRegex; exports.emailRegex = emailRegex; exports.onlyLettersRegex = onlyLettersRegex; exports.onlyNumbersRegex = onlyNumbersRegex; exports.passwordRegex = passwordRegex; exports.urlOptionalProtocolRegex = urlOptionalProtocolRegex; exports.urlRegex = urlRegex; exports.usaPhoneRegex = usaPhoneRegex; exports.usaPostalRegex = usaPostalRegex; exports.uuidRegex = uuidRegex; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=terminus-ngx-tools-regex.umd.js.map