@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
JavaScript
(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