123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import { VALID_DIGITS } from '../../constants.js'
- const RFC3966_EXTN_PREFIX = ';ext='
- const getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})`
- export default function createExtensionPattern(purpose) {
-
-
-
-
-
-
- var extLimitAfterExplicitLabel = '20';
-
- var extLimitAfterLikelyLabel = '15';
-
- var extLimitAfterAmbiguousChar = '9';
-
- var extLimitWhenNotSure = '6';
-
- var possibleSeparatorsBetweenNumberAndExtLabel = "[ \u00A0\\t,]*";
-
-
- var possibleCharsAfterExtLabel = "[:\\.\uFF0E]?[ \u00A0\\t,-]*";
-
- var optionalExtnSuffix = "#?";
-
-
-
- var explicitExtLabels =
- "(?:e?xt(?:ensi(?:o\u0301?|\u00F3))?n?|\uFF45?\uFF58\uFF54\uFF4E?|\u0434\u043E\u0431|anexo)";
-
-
-
- var ambiguousExtLabels = "(?:[x\uFF58#\uFF03~\uFF5E]|int|\uFF49\uFF4E\uFF54)";
-
-
- var ambiguousSeparator = "[- ]+";
-
-
-
- var possibleSeparatorsNumberExtLabelNoComma = "[ \u00A0\\t]*";
-
-
-
-
-
- var autoDiallingAndExtLabelsFound = "(?:,{2}|;)";
-
- var rfcExtn = RFC3966_EXTN_PREFIX
- + getExtensionDigitsPattern(extLimitAfterExplicitLabel);
-
- var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels
- + possibleCharsAfterExtLabel
- + getExtensionDigitsPattern(extLimitAfterExplicitLabel)
- + optionalExtnSuffix;
-
- var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels
- + possibleCharsAfterExtLabel
- + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)
- + optionalExtnSuffix;
-
- var americanStyleExtnWithSuffix = ambiguousSeparator
- + getExtensionDigitsPattern(extLimitWhenNotSure) + "#";
-
- var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma
- + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel
- + getExtensionDigitsPattern(extLimitAfterLikelyLabel)
- + optionalExtnSuffix;
-
- var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma
- + "(?:,)+" + possibleCharsAfterExtLabel
- + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)
- + optionalExtnSuffix;
-
-
-
-
-
-
-
-
-
-
-
-
- return rfcExtn + "|"
- + explicitExtn + "|"
- + ambiguousExtn + "|"
- + americanStyleExtnWithSuffix + "|"
- + autoDiallingExtn + "|"
- + onlyCommasExtn;
- }
|