regex.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /**
  2. * @fileoverview added by tsickle
  3. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  4. */
  5. import { hasOwnProp, isFunction } from '../utils/type-checks';
  6. /** @type {?} */
  7. export var match1 = /\d/;
  8. // 0 - 9
  9. /** @type {?} */
  10. export var match2 = /\d\d/;
  11. // 00 - 99
  12. /** @type {?} */
  13. export var match3 = /\d{3}/;
  14. // 000 - 999
  15. /** @type {?} */
  16. export var match4 = /\d{4}/;
  17. // 0000 - 9999
  18. /** @type {?} */
  19. export var match6 = /[+-]?\d{6}/;
  20. // -999999 - 999999
  21. /** @type {?} */
  22. export var match1to2 = /\d\d?/;
  23. // 0 - 99
  24. /** @type {?} */
  25. export var match3to4 = /\d\d\d\d?/;
  26. // 999 - 9999
  27. /** @type {?} */
  28. export var match5to6 = /\d\d\d\d\d\d?/;
  29. // 99999 - 999999
  30. /** @type {?} */
  31. export var match1to3 = /\d{1,3}/;
  32. // 0 - 999
  33. /** @type {?} */
  34. export var match1to4 = /\d{1,4}/;
  35. // 0 - 9999
  36. /** @type {?} */
  37. export var match1to6 = /[+-]?\d{1,6}/;
  38. // -999999 - 999999
  39. /** @type {?} */
  40. export var matchUnsigned = /\d+/;
  41. // 0 - inf
  42. /** @type {?} */
  43. export var matchSigned = /[+-]?\d+/;
  44. // -inf - inf
  45. /** @type {?} */
  46. export var matchOffset = /Z|[+-]\d\d:?\d\d/gi;
  47. // +00:00 -00:00 +0000 -0000 or Z
  48. /** @type {?} */
  49. export var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi;
  50. // +00 -00 +00:00 -00:00 +0000 -0000 or Z
  51. /** @type {?} */
  52. export var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/;
  53. // 123456789 123456789.123
  54. // any word (or two) characters or numbers including two/three word month in arabic.
  55. // includes scottish gaelic two word and hyphenated months
  56. // tslint:disable-next-line
  57. /** @type {?} */
  58. export var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;
  59. /** @type {?} */
  60. var regexes = {};
  61. /**
  62. * @param {?} token
  63. * @param {?} regex
  64. * @param {?=} strictRegex
  65. * @return {?}
  66. */
  67. export function addRegexToken(token, regex, strictRegex) {
  68. if (isFunction(regex)) {
  69. regexes[token] = regex;
  70. return;
  71. }
  72. regexes[token] = (/**
  73. * @param {?} isStrict
  74. * @param {?} locale
  75. * @return {?}
  76. */
  77. function (isStrict, locale) {
  78. return (isStrict && strictRegex) ? strictRegex : regex;
  79. });
  80. }
  81. /**
  82. * @param {?} token
  83. * @param {?} locale
  84. * @return {?}
  85. */
  86. export function getParseRegexForToken(token, locale) {
  87. /** @type {?} */
  88. var _strict = false;
  89. if (!hasOwnProp(regexes, token)) {
  90. return new RegExp(unescapeFormat(token));
  91. }
  92. return regexes[token](_strict, locale);
  93. }
  94. // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
  95. /**
  96. * @param {?} str
  97. * @return {?}
  98. */
  99. function unescapeFormat(str) {
  100. // tslint:disable-next-line
  101. return regexEscape(str
  102. .replace('\\', '')
  103. .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, (/**
  104. * @param {?} matched
  105. * @param {?} p1
  106. * @param {?} p2
  107. * @param {?} p3
  108. * @param {?} p4
  109. * @return {?}
  110. */
  111. function (matched, p1, p2, p3, p4) { return p1 || p2 || p3 || p4; })));
  112. }
  113. /**
  114. * @param {?} str
  115. * @return {?}
  116. */
  117. export function regexEscape(str) {
  118. return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
  119. }
  120. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL2Nocm9ub3MvIiwic291cmNlcyI6WyJwYXJzZS9yZWdleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHOUQsTUFBTSxLQUFPLE1BQU0sR0FBRyxJQUFJOzs7QUFDMUIsTUFBTSxLQUFPLE1BQU0sR0FBRyxNQUFNOzs7QUFDNUIsTUFBTSxLQUFPLE1BQU0sR0FBRyxPQUFPOzs7QUFDN0IsTUFBTSxLQUFPLE1BQU0sR0FBRyxPQUFPOzs7QUFDN0IsTUFBTSxLQUFPLE1BQU0sR0FBRyxZQUFZOzs7QUFDbEMsTUFBTSxLQUFPLFNBQVMsR0FBRyxPQUFPOzs7QUFDaEMsTUFBTSxLQUFPLFNBQVMsR0FBRyxXQUFXOzs7QUFDcEMsTUFBTSxLQUFPLFNBQVMsR0FBRyxlQUFlOzs7QUFDeEMsTUFBTSxLQUFPLFNBQVMsR0FBRyxTQUFTOzs7QUFDbEMsTUFBTSxLQUFPLFNBQVMsR0FBRyxTQUFTOzs7QUFDbEMsTUFBTSxLQUFPLFNBQVMsR0FBRyxjQUFjOzs7QUFFdkMsTUFBTSxLQUFPLGFBQWEsR0FBRyxLQUFLOzs7QUFDbEMsTUFBTSxLQUFPLFdBQVcsR0FBRyxVQUFVOzs7QUFFckMsTUFBTSxLQUFPLFdBQVcsR0FBRyxvQkFBb0I7OztBQUMvQyxNQUFNLEtBQU8sZ0JBQWdCLEdBQUcseUJBQXlCOzs7QUFFekQsTUFBTSxLQUFPLGNBQWMsR0FBRyxzQkFBc0I7Ozs7OztBQUtwRCxNQUFNLEtBQU8sU0FBUyxHQUFHLDBJQUEwSTs7SUFHN0osT0FBTyxHQUFtQyxFQUFFOzs7Ozs7O0FBR2xELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYSxFQUFFLEtBQTZCLEVBQUUsV0FBb0I7SUFDOUYsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUV2QixPQUFPO0tBQ1I7SUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDOzs7OztJQUFHLFVBQVUsUUFBaUIsRUFBRSxNQUFjO1FBQzFELE9BQU8sQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3pELENBQUMsQ0FBQSxDQUFDO0FBQ0osQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQWEsRUFBRSxNQUFjOztRQUMzRCxPQUFPLEdBQUcsS0FBSztJQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQzFDO0lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7Ozs7OztBQUdELFNBQVMsY0FBYyxDQUFDLEdBQVc7SUFDakMsMkJBQTJCO0lBQzNCLE9BQU8sV0FBVyxDQUFDLEdBQUc7U0FDbkIsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7U0FDakIsT0FBTyxDQUFDLHFDQUFxQzs7Ozs7Ozs7SUFBRSxVQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUssT0FBQSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQXBCLENBQW9CLEVBQUMsQ0FDbkcsQ0FBQztBQUNKLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFXO0lBQ3JDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGFzT3duUHJvcCwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzL3R5cGUtY2hlY2tzJztcbmltcG9ydCB7IExvY2FsZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgbWF0Y2gxID0gL1xcZC87ICAgICAgICAgICAgLy8gICAgICAgMCAtIDlcbmV4cG9ydCBjb25zdCBtYXRjaDIgPSAvXFxkXFxkLzsgICAgICAgICAgLy8gICAgICAwMCAtIDk5XG5leHBvcnQgY29uc3QgbWF0Y2gzID0gL1xcZHszfS87ICAgICAgICAgLy8gICAgIDAwMCAtIDk5OVxuZXhwb3J0IGNvbnN0IG1hdGNoNCA9IC9cXGR7NH0vOyAgICAgICAgIC8vICAgIDAwMDAgLSA5OTk5XG5leHBvcnQgY29uc3QgbWF0Y2g2ID0gL1srLV0/XFxkezZ9LzsgICAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuZXhwb3J0IGNvbnN0IG1hdGNoMXRvMiA9IC9cXGRcXGQ/LzsgICAgICAgICAvLyAgICAgICAwIC0gOTlcbmV4cG9ydCBjb25zdCBtYXRjaDN0bzQgPSAvXFxkXFxkXFxkXFxkPy87ICAgICAvLyAgICAgOTk5IC0gOTk5OVxuZXhwb3J0IGNvbnN0IG1hdGNoNXRvNiA9IC9cXGRcXGRcXGRcXGRcXGRcXGQ/LzsgLy8gICA5OTk5OSAtIDk5OTk5OVxuZXhwb3J0IGNvbnN0IG1hdGNoMXRvMyA9IC9cXGR7MSwzfS87ICAgICAgIC8vICAgICAgIDAgLSA5OTlcbmV4cG9ydCBjb25zdCBtYXRjaDF0bzQgPSAvXFxkezEsNH0vOyAgICAgICAvLyAgICAgICAwIC0gOTk5OVxuZXhwb3J0IGNvbnN0IG1hdGNoMXRvNiA9IC9bKy1dP1xcZHsxLDZ9LzsgIC8vIC05OTk5OTkgLSA5OTk5OTlcblxuZXhwb3J0IGNvbnN0IG1hdGNoVW5zaWduZWQgPSAvXFxkKy87ICAgICAgICAgICAvLyAgICAgICAwIC0gaW5mXG5leHBvcnQgY29uc3QgbWF0Y2hTaWduZWQgPSAvWystXT9cXGQrLzsgICAgICAvLyAgICAtaW5mIC0gaW5mXG5cbmV4cG9ydCBjb25zdCBtYXRjaE9mZnNldCA9IC9afFsrLV1cXGRcXGQ6P1xcZFxcZC9naTsgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG5leHBvcnQgY29uc3QgbWF0Y2hTaG9ydE9mZnNldCA9IC9afFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/L2dpOyAvLyArMDAgLTAwICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWlxuXG5leHBvcnQgY29uc3QgbWF0Y2hUaW1lc3RhbXAgPSAvWystXT9cXGQrKFxcLlxcZHsxLDN9KT8vOyAvLyAxMjM0NTY3ODkgMTIzNDU2Nzg5LjEyM1xuXG4vLyBhbnkgd29yZCAob3IgdHdvKSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMgaW5jbHVkaW5nIHR3by90aHJlZSB3b3JkIG1vbnRoIGluIGFyYWJpYy5cbi8vIGluY2x1ZGVzIHNjb3R0aXNoIGdhZWxpYyB0d28gd29yZCBhbmQgaHlwaGVuYXRlZCBtb250aHNcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuZXhwb3J0IGNvbnN0IG1hdGNoV29yZCA9IC9bMC05XXswLDI1Nn1bJ2EtelxcdTAwQTAtXFx1MDVGRlxcdTA3MDAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl17MSwyNTZ9fFtcXHUwNjAwLVxcdTA2RkZcXC9dezEsMjU2fShcXHMqP1tcXHUwNjAwLVxcdTA2RkZdezEsMjU2fSl7MSwyfS9pO1xuXG5leHBvcnQgdHlwZSBSZWdFeHBUb2tlbkZuID0gKGlzU3RyaWN0OiBib29sZWFuLCBsb2NhbGU6IExvY2FsZSkgPT4gUmVnRXhwO1xuY29uc3QgcmVnZXhlczoge1trZXk6IHN0cmluZ106IFJlZ0V4cFRva2VuRm59ID0ge307XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4odG9rZW46IHN0cmluZywgcmVnZXg6IFJlZ0V4cCB8IFJlZ0V4cFRva2VuRm4sIHN0cmljdFJlZ2V4PzogUmVnRXhwKTogdm9pZCB7XG4gIGlmIChpc0Z1bmN0aW9uKHJlZ2V4KSkge1xuICAgIHJlZ2V4ZXNbdG9rZW5dID0gcmVnZXg7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICByZWdleGVzW3Rva2VuXSA9IGZ1bmN0aW9uIChpc1N0cmljdDogYm9vbGVhbiwgbG9jYWxlOiBMb2NhbGUpIHtcbiAgICByZXR1cm4gKGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4KSA/IHN0cmljdFJlZ2V4IDogcmVnZXg7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW46IHN0cmluZywgbG9jYWxlOiBMb2NhbGUpOiBSZWdFeHAge1xuICBjb25zdCBfc3RyaWN0ID0gZmFsc2U7XG4gIGlmICghaGFzT3duUHJvcChyZWdleGVzLCB0b2tlbikpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cCh1bmVzY2FwZUZvcm1hdCh0b2tlbikpO1xuICB9XG5cbiAgcmV0dXJuIHJlZ2V4ZXNbdG9rZW5dKF9zdHJpY3QsIGxvY2FsZSk7XG59XG5cbi8vIENvZGUgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUtYS1yZWdleHAtZXNjYXBlLWZ1bmN0aW9uLWluLWphdmFzY3JpcHRcbmZ1bmN0aW9uIHVuZXNjYXBlRm9ybWF0KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHJldHVybiByZWdleEVzY2FwZShzdHJcbiAgICAucmVwbGFjZSgnXFxcXCcsICcnKVxuICAgIC5yZXBsYWNlKC9cXFxcKFxcWyl8XFxcXChcXF0pfFxcWyhbXlxcXVxcW10qKVxcXXxcXFxcKC4pL2csIChtYXRjaGVkLCBwMSwgcDIsIHAzLCBwNCkgPT4gcDEgfHwgcDIgfHwgcDMgfHwgcDQpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdleEVzY2FwZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59XG4iXX0=