diff --git a/docs/model/AU.html b/docs/model/AU.html
index 0ceadec..47bd08b 100644
--- a/docs/model/AU.html
+++ b/docs/model/AU.html
@@ -281,6 +281,15 @@
IT
+
+
+
+
+ JP
+
@@ -758,11 +767,50 @@
+ Expected:
+
+ Delta:
+
+ Expected:
+
+ Delta:
+
+ Expected:
+
+ Delta:
+
+ Expected:
+
+ Delta:
+
+ Expected:
+ Overview of concepts
+
+
+
+
+ Example addresses
+
+
+
+
@@ -1485,6 +1537,10 @@ Example addresses
+
+
+
+
@@ -1549,9 +1605,27 @@ country AU
Example addresses
Output for "address":
Apt. 19 Level 7 345 Main Street
SYDNEY NSW 2000
-AUSTRALIA
+AU
+ Apt. 19 Level 7 345 Main Street
+SYDNEY NSW 2000
+AUSTRALIA
+
+
+ --- expected_output
++++ actual_output
+@@ -1,3 +1,3 @@
+ Apt. 19 Level 7 345 Main Street
+ SYDNEY NSW 2000
+-AUSTRALIA
++AU
+
+
@@ -3544,13 +3618,13 @@ Children:
Formatting:
Flattened formatting:
-unit-typeunit-name␣Level floor␣␣building␣street
locality1␣admin-area1␣postal-code
country-name
+unit-typeunit-name␣Level floor␣␣building␣street
locality1␣admin-area1␣postal-code-prefix-postal-code-suffix
country
@@ -5505,6 +5579,261 @@
Flattened formatting:
+
+
+
+
+
+
+
+Parsing:
+Decomposition
+
+ (
+ Anchor beginning: TrueParsePostalCodeMandatorySeparatorExpression)
+
+
+
+ Capture Reference: ParsePostalCodeMandatorySeparatorExpression
+
+
+
+
+
+ Capture
+
+
+ Parts: postal-code
+
+ (MATCH_REQUIRED)
+
+
+
+
+
+
+
+
+
+ Capture
+
+
+ Parts: postal-code-prefix
+
+ (MATCH_REQUIRED)
+
+
+
+
+
+
+
+Regex Reference:
+
+
+
+
+ Regex Reference: kZipPrefixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+
+
+ Capture
+
+
+ Parts: postal-code-suffix
+
+ (MATCH_OPTIONAL)
+
+
+
+
+
+
+
+Regex Reference:
+
+
+
+
+ Regex Reference: kZipSuffixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+
+Children:
+
+
+
+Formatting:
+Flattened formatting:
+
+postal-code-prefix-postal-code-suffix
+
+ #
+
+ postal-code-prefix
+
+
+ #
+
+ postal-code-suffix
+
+Overview of concepts
+ Example addresses
+
+
+
+
@@ -1593,6 +1645,10 @@ Example addresses
+
+
+
+
@@ -1657,9 +1713,32 @@ country BR
Example addresses
Centro
Rio de Janeiro - RJ
20230-153
-Brasil
+BR
+ Avenida Mem de Sá, 1234
+Andar 1, Apto. 12
+Ponto de referência: Theatro Municipal do Rio de Janeiro
+Centro
+Rio de Janeiro - RJ
+20230-153
+Brasil
+
+
+ --- expected_output
++++ actual_output
+@@ -4,4 +4,4 @@
+ Centro
+ Rio de Janeiro - RJ
+ 20230-153
+-Brasil
++BR
+
+
@@ -1777,6 +1856,10 @@ Example addresses
+
+
+
+
@@ -1841,8 +1924,31 @@ country BR
Example addresses
Centro
Rio de Janeiro - RJ
20230-153
-Brasil
+BR
+
+ Avenida Mem de Sá, 1234
+1º andar, ap 12
+Ponto de referência: Theatro Municipal do Rio de Janeiro
+Centro
+Rio de Janeiro - RJ
+20230-153
+Brasil
+
+
+ --- expected_output
++++ actual_output
+@@ -4,4 +4,4 @@
+ Centro
+ Rio de Janeiro - RJ
+ 20230-153
+-Brasil
++BR
+
@@ -1945,6 +2051,10 @@ Example addresses
+
+
+
+
@@ -2007,8 +2117,29 @@ country BR
Example addresses
Andar 4
Brasília - DF
70297-400
-Brasil
+BR
+
+ SCS – Quadra 6, Bloco A
+Andar 4
+Brasília - DF
+70297-400
+Brasil
+
+
+ --- expected_output
++++ actual_output
+@@ -2,4 +2,4 @@
+ Andar 4
+ Brasília - DF
+ 70297-400
+-Brasil
++BR
+
@@ -3927,13 +4058,13 @@ Children:
Formatting:
Flattened formatting:
-street,␣building
Andar floor,␣unit-typeunit-name
Ponto de referência: landmark
locality2
locality1␣-␣admin-area1
postal-code
country-name
+street,␣building
Andar floor,␣unit-typeunit-name
Ponto de referência: landmark
locality2
locality1␣-␣admin-area1
postal-code-prefix-postal-code-suffix
country
@@ -6991,6 +7122,263 @@
Flattened formatting:
+
+
+
+
+
+
+
+Parsing:
+Decomposition
+
+ (
+ Anchor beginning: TrueParsePostalCodeOptionalSeparatorExpression)
+
+
+
+ Capture Reference: ParsePostalCodeOptionalSeparatorExpression
+
+
+
+
+
+ Capture
+
+
+ Parts: postal-code
+
+ (MATCH_REQUIRED)
+
+
+
+
+
+
+
+
+
+ Capture
+
+
+ Parts: postal-code-prefix
+
+ (MATCH_REQUIRED)
+
+
+
+
+
+
+
+kZipPrefixValueRe =>
+ (?:\d{5})
+
+
+
+
+
+ No capturing pattern
+
+ (MATCH_OPTIONAL)
+
+
+
+ Parts:
+
+
+
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+
+
+ Capture
+
+
+ Parts: postal-code-suffix
+
+ (MATCH_OPTIONAL)
+
+
+
+
+
+
+
+kZipSuffixValueRe =>
+ (?:\d{3})
+
+
+
+
+Children:
+
+
+
+Formatting:
+Flattened formatting:
+
+postal-code-prefix-postal-code-suffix
+
+ #
+
+ postal-code-prefix
+
+
+ #
+
+ postal-code-suffix
+
+Overview of concepts
Example addresses
+
+
+
+
@@ -1234,8 +1286,16 @@ Example addresses
+
+
+
+
+
+
+
postal-code-prefix
+ M5H
-
@@ -1305,8 +1365,27 @@ postal-code
+ M5H 2J9
postal-code-suffix 2J9
Example addresses
123 Main Street
Apt. 306
Ottawa, ON M5H 2J9
-Canada
+CA
+
+ 123 Main Street
+Apt. 306
+Ottawa, ON M5H 2J9
+Canada
+
+ Delta: +
--- expected_output ++++ actual_output +@@ -1,4 +1,4 @@ + 123 Main Street + Apt. 306 + Ottawa, ON M5H 2J9 +-Canada ++CA+ @@ -1336,27 +1415,10 @@
kHasCjkNameCharacteristics)
+
+ kHasCjkNameCharacteristics^
- kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+(?:
-kCjkNameSeperatorsRe =>
+ (?:・|·| |\s+)
-kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+
+
+
+)?$
+ParseSeparatedCjkNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+
+
+
+kCjkNameSeperatorsRe =>
+ (?:・|·| |\s+)
+
+
+
+given-name
+
+ (MATCH_REQUIRED)
+ kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+
+
+
+ParseKoreanTwoCharacterLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kTwoCharacterKoreanNamesRe =>
+ (?:강전|남궁|독고|동방|망절|사공|서문|선우|소봉|어금|장곡|제갈|황목|황보)
+
+
+
+given-name
+
+ (MATCH_REQUIRED)
+ kHangulCharacterRe =>
+ \p{Hangul}
+
+
+
+kHangulCharactersRe =>
+ \p{Hangul}+
+
+
+
+ParseCommonCjkTwoCharacterLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kTwoCharacterCjkLastNamesRe =>
+ (?:남궁|사공|서문|선우|제갈|황보|독고|망절|欧阳|令狐|皇甫|上官|司徒|诸葛|司马|宇文|呼延|端木|張簡|歐陽|諸葛|申屠|尉遲|司馬|軒轅|夏侯)
+
+
+
+given-name
+
+ (MATCH_OPTIONAL)
+ kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+
+
+
+ParseCjkSingleCharacterLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kCjkCharacterRe =>
+ (?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})
+
+
+
+given-name
+
+ (MATCH_OPTIONAL)
+ kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+
+
+
+kHasHispanicLatinxNameCharacteristics)
+
+ kHasHispanicLatinxNameCharacteristics(?:
+
+
+kHispanicCommonLastNameCharacteristicsRe =>
+ (?:Aguilar|Alonso|Álvarez|Amador|Betancourt|Blanco|Burgos|Castillo|Castro|Chávez|Colón|Contreras|Cortez|Cruz|Delgado|Diaz|Díaz|Domínguez|Estrada|Fernandez|Fernández|Flores|Fuentes|Garcia|García|Garza|Gil|Gómez|González|Guerrero|Gutiérrez|Guzmán|Hernández|Herrera|Iglesias|Jiménez|Juárez|Lopez|López|Luna|Marín|Marroquín|Martín|Martinez|Martínez|Medina|Méndez|Mendoza|Molina|Morales|Moreno|Muñoz|Narvaez|Navarro|Núñez|Ortega|Ortiz|Ortíz|Peña|Perez|Pérez|Ramírez|Ramos|Reyes|Rivera|Rodriguez|Rodríguez|Rojas|Romero|Rosario|Rubio|Ruiz|Ruíz|Salazar|Sanchez|Sánchez|Santana|Santiago|Santos|Sanz|Serrano|Soto|Suárez|Toro|Torres|Vargas|Vasquez|Vásquez|Vázquez|Velásquez)
+
+
+
+|
+
+
+kHispanicLastNameConjunctionCharacteristicsRe =>
+ \s(?:y|e|i)\s
+
+
+
+)
+
+
+ParseHispanicFullNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ kHonorificPrefixRe =>
+ (?:Master|Mr\.?|Miss\.?|Mrs\.?|Missus|Ms\.?|Mx\.?|M\.?|Ma'am|Sir|Gentleman|Sire|Mistress|Madam|Ma'am|Dame|Lord|Lady|Esq|Excellency|Excellence|Her Honour|His Honour|Hon\.?|The Right Honourable|The Most Honourable|Dr\.?|PhD|DPhil|MD|DO|Prof\.|Professor|QC|CL|Chancellor|Vice-Chancellor|Principle|Principal|President|Master|Warden|Dean|Regent|Rector|Provost|Director|Chief Executive|Imām|Shaykh|Muftī|Hāfiz|Hāfizah|Qārī|Mawlānā|Hājī|Sayyid|Sayyidah|Sharif|Eminent|Venerable|His Holiness|His Holiness|His All Holiness|His Beatitude|The Most Blessed|His Excellency|His Most Eminent Highness|His Eminence|Most Reverend Eminence|The Most Reverend|His Grace|His Lordship|The Reverend|Fr|Pr|Br|Sr|Elder|Rabbi|The Reverend|Cantor|Chief Rabbi|Grand Rabbi|Rebbetzin|Herr|Frau|Fräulein|Dame|PD|Doktor|Magister|Ingenieur|1lt|1st|2lt|2nd|3rd|admiral|capt|captain|col|cpt|dr|gen|general|lcdr|lt|ltc|ltg|ltjg|maj|major|mg|pastor|prof|rep|reverend|rev|sen|st)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+given-name
+
+ (MATCH_LAZY_OPTIONAL)
+ kMultipleLazyWordsRe =>
+ (?:[^\s,]+(?:[^\S\r\n]+[^\s,]+)*?)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+ParseHispanicLastNameExpressionfamily-name
+
+ (MATCH_REQUIRED)
+ kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+kHispanicLastNameConjunctionsRe =>
+ (?:y|e|i)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+ParseOnlyLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+kLastNameSuffixRe =>
+ (?:(?:b\.a|ba|d\.d\.s|dds|ii|iii|iv|ix|jr|m\.a|m\.d|md|ms|ph\.?d|sr|v|vi|vii|viii|x)\.?)
+
+
+
+ParseLastCommaFirstMiddleNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ kHonorificPrefixRe =>
+ (?:Master|Mr\.?|Miss\.?|Mrs\.?|Missus|Ms\.?|Mx\.?|M\.?|Ma'am|Sir|Gentleman|Sire|Mistress|Madam|Ma'am|Dame|Lord|Lady|Esq|Excellency|Excellence|Her Honour|His Honour|Hon\.?|The Right Honourable|The Most Honourable|Dr\.?|PhD|DPhil|MD|DO|Prof\.|Professor|QC|CL|Chancellor|Vice-Chancellor|Principle|Principal|President|Master|Warden|Dean|Regent|Rector|Provost|Director|Chief Executive|Imām|Shaykh|Muftī|Hāfiz|Hāfizah|Qārī|Mawlānā|Hājī|Sayyid|Sayyidah|Sharif|Eminent|Venerable|His Holiness|His Holiness|His All Holiness|His Beatitude|The Most Blessed|His Excellency|His Most Eminent Highness|His Eminence|Most Reverend Eminence|The Most Reverend|His Grace|His Lordship|The Reverend|Fr|Pr|Br|Sr|Elder|Rabbi|The Reverend|Cantor|Chief Rabbi|Grand Rabbi|Rebbetzin|Herr|Frau|Fräulein|Dame|PD|Doktor|Magister|Ingenieur|1lt|1st|2lt|2nd|3rd|admiral|capt|captain|col|cpt|dr|gen|general|lcdr|lt|ltc|ltg|ltjg|maj|major|mg|pastor|prof|rep|reverend|rev|sen|st)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+family-name
+
+ (MATCH_REQUIRED)
+ kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+\s*,\s*
+
+
+given-name
+
+ (MATCH_OPTIONAL)
+ kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+additional-name
+
+ (MATCH_LAZY_OPTIONAL)
+ kMultipleLazyWordsRe =>
+ (?:[^\s,]+(?:[^\S\r\n]+[^\s,]+)*?)
+
+
+
+ParseFirstMiddleLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ kHonorificPrefixRe =>
+ (?:Master|Mr\.?|Miss\.?|Mrs\.?|Missus|Ms\.?|Mx\.?|M\.?|Ma'am|Sir|Gentleman|Sire|Mistress|Madam|Ma'am|Dame|Lord|Lady|Esq|Excellency|Excellence|Her Honour|His Honour|Hon\.?|The Right Honourable|The Most Honourable|Dr\.?|PhD|DPhil|MD|DO|Prof\.|Professor|QC|CL|Chancellor|Vice-Chancellor|Principle|Principal|President|Master|Warden|Dean|Regent|Rector|Provost|Director|Chief Executive|Imām|Shaykh|Muftī|Hāfiz|Hāfizah|Qārī|Mawlānā|Hājī|Sayyid|Sayyidah|Sharif|Eminent|Venerable|His Holiness|His Holiness|His All Holiness|His Beatitude|The Most Blessed|His Excellency|His Most Eminent Highness|His Eminence|Most Reverend Eminence|The Most Reverend|His Grace|His Lordship|The Reverend|Fr|Pr|Br|Sr|Elder|Rabbi|The Reverend|Cantor|Chief Rabbi|Grand Rabbi|Rebbetzin|Herr|Frau|Fräulein|Dame|PD|Doktor|Magister|Ingenieur|1lt|1st|2lt|2nd|3rd|admiral|capt|captain|col|cpt|dr|gen|general|lcdr|lt|ltc|ltg|ltjg|maj|major|mg|pastor|prof|rep|reverend|rev|sen|st)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+given-name
+
+ (MATCH_OPTIONAL)
+ kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+additional-name
+
+ (MATCH_LAZY_OPTIONAL)
+ kMultipleLazyWordsRe =>
+ (?:[^\s,]+(?:[^\S\r\n]+[^\s,]+)*?)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+family-name
+
+ (MATCH_REQUIRED)
+ kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+kLastNameSuffixRe =>
+ (?:(?:b\.a|ba|d\.d\.s|dds|ii|iii|iv|ix|jr|m\.a|m\.d|md|ms|ph\.?d|sr|v|vi|vii|viii|x)\.?)
+
+
+
+ParsePostalCodeOptionalSeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRe =>
+ (?:[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z])
+
+
+
+kZipCodeSeparatorsRekWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRe =>
+ (?:\d[ABCEGHJ-NPRSTV-Z]\d)
+
+
+
+DE
Mozartstr. 9 Obergeschoss 2 Wohnung 3 67677 Enkenbach -Deutschland+DE +
+ Expected: +
Mozartstr. 9 +Obergeschoss 2 Wohnung 3 +67677 Enkenbach +Deutschland ++ +
+ Delta: +
--- expected_output ++++ actual_output +@@ -1,4 +1,4 @@ + Mozartstr. 9 + Obergeschoss 2 Wohnung 3 + 67677 Enkenbach +-Deutschland ++DE+ + @@ -3698,13 +3774,13 @@
ParsePostalCodeMandatorySeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+FR
+ Expected: +
1661 Place Charles de Gaulle +Appartament 36 +Quartier du Marais +59491 Villeneuve-d'ascq +France+ +
+ Delta: +
--- expected_output ++++ actual_output +@@ -2,4 +2,4 @@ + Appartament 36 + Quartier du Marais + 59491 Villeneuve-d'ascq +-France ++FR+ + @@ -3465,13 +3541,13 @@
ParsePostalCodeMandatorySeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+IT
Via Roma 15, Appartamento 3 20121 Milano MI -Italia+IT +
+ Expected: +
Via Roma 15, Appartamento 3 +20121 Milano MI +Italia ++ +
+ Delta: +
--- expected_output ++++ actual_output +@@ -1,3 +1,3 @@ + Via Roma 15, Appartamento 3 + 20121 Milano MI +-Italia ++IT+ + @@ -3646,13 +3720,13 @@
ParsePostalCodeMandatorySeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+MX
+ Expected: +
Avenida Álvaro Obregón 1234, Piso 10, Apartamento 5A +Entre Calles Tonalá y Monterrey +Cerca del Parque España +Roma Nte. +06140 Ciudad de México, CDMX +Mexico ++ +
+ Delta: +
--- expected_output ++++ actual_output +@@ -3,4 +3,4 @@ + Cerca del Parque España + Roma Nte. + 06140 Ciudad de México, CDMX +-Mexico ++MX+ @@ -3934,13 +4012,13 @@
ParsePostalCodeMandatorySeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+1234 AB
1234
AB
Kerkstraat 10-A 1234 AB Amsterdam -Netherlands+NL +
+ Expected: +
Kerkstraat 10-A +1234 AB Amsterdam +Netherlands ++ +
+ Delta: +
--- expected_output ++++ actual_output +@@ -1,3 +1,3 @@ + Kerkstraat 10-A + 1234 AB Amsterdam +-Netherlands ++NL+ + @@ -1760,8 +1838,16 @@
1234 AB
1234
AB
Kerkstraat 10 1234 AB Amsterdam -Netherlands+NL +
+ Expected: +
Kerkstraat 10 +1234 AB Amsterdam +Netherlands ++ +
+ Delta: +
--- expected_output ++++ actual_output +@@ -1,3 +1,3 @@ + Kerkstraat 10 + 1234 AB Amsterdam +-Netherlands ++NL+ + @@ -3970,13 +4074,13 @@
ParsePostalCodeOptionalSeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRe =>
+ (?:[1-9]\d{3})
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRe =>
+ (?:[A-Z]{2})
+
+
+
+PL
ul. Warsaw 9/10 01-001 Warsaw -Polska+PL +
+ Expected: +
ul. Warsaw 9/10 +01-001 Warsaw +Polska ++ +
+ Delta: +
--- expected_output ++++ actual_output +@@ -1,3 +1,3 @@ + ul. Warsaw 9/10 + 01-001 Warsaw +-Polska ++PL+ + @@ -1677,6 +1751,10 @@
PL
ul. Warsaw 9 01-001 Warsaw -Polska+PL +
+ Expected: +
ul. Warsaw 9 +01-001 Warsaw +Polska ++ +
+ Delta: +
--- expected_output ++++ actual_output +@@ -1,3 +1,3 @@ + ul. Warsaw 9 + 01-001 Warsaw +-Polska ++PL+ + @@ -3736,13 +3832,13 @@
ParsePostalCodeOptionalSeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRe =>
+ (?:\d{2})
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRe =>
+ (?:\d{3})
+
+
+
+11367
11367
4100
1234 Main St. Apt. 10, Club of Autofillers -New York City, NY 11367 -USA+New York City, NY 11367-4100 +US +
+ Expected: +
1234 Main St. +Apt. 10, Club of Autofillers +New York City, NY 11367-4100 +USA ++ +
+ Delta: +
--- expected_output ++++ actual_output +@@ -1,4 +1,4 @@ + 1234 Main St. + Apt. 10, Club of Autofillers + New York City, NY 11367-4100 +-USA ++US+ + @@ -1336,27 +1416,10 @@
kHasCjkNameCharacteristics)
+
+ kHasCjkNameCharacteristics^
- kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+(?:
-kCjkNameSeperatorsRe =>
+ (?:・|·| |\s+)
-kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+
+
+
+)?$
+ParseSeparatedCjkNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
-kCjkNameSeperatorsRe =>
+ (?:・|·| |\s+)
-given-name
+
+ (MATCH_REQUIRED)
+ kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+
+
+
+ParseKoreanTwoCharacterLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kTwoCharacterKoreanNamesRe =>
+ (?:강전|남궁|독고|동방|망절|사공|서문|선우|소봉|어금|장곡|제갈|황목|황보)
+
+
+
+given-name
+
+ (MATCH_REQUIRED)
+ kHangulCharacterRe =>
+ \p{Hangul}
+
+
+
+kHangulCharactersRe =>
+ \p{Hangul}+
+
+
+
+ParseCommonCjkTwoCharacterLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kTwoCharacterCjkLastNamesRe =>
+ (?:남궁|사공|서문|선우|제갈|황보|독고|망절|欧阳|令狐|皇甫|上官|司徒|诸葛|司马|宇文|呼延|端木|張簡|歐陽|諸葛|申屠|尉遲|司馬|軒轅|夏侯)
+
+
+
+given-name
+
+ (MATCH_OPTIONAL)
+ kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+
+
+
+ParseCjkSingleCharacterLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kCjkCharacterRe =>
+ (?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})
+
+
+
+given-name
+
+ (MATCH_OPTIONAL)
+ kCjkCharactersRe =>
+ (?:(?:\p{Han}|\p{Hangul}|\p{Katakana}|\p{Hiragana}|\p{Bopomofo})+)
+
+
+
+kHasHispanicLatinxNameCharacteristics)
+
+ kHasHispanicLatinxNameCharacteristics(?:
+
+
+kHispanicCommonLastNameCharacteristicsRe =>
+ (?:Aguilar|Alonso|Álvarez|Amador|Betancourt|Blanco|Burgos|Castillo|Castro|Chávez|Colón|Contreras|Cortez|Cruz|Delgado|Diaz|Díaz|Domínguez|Estrada|Fernandez|Fernández|Flores|Fuentes|Garcia|García|Garza|Gil|Gómez|González|Guerrero|Gutiérrez|Guzmán|Hernández|Herrera|Iglesias|Jiménez|Juárez|Lopez|López|Luna|Marín|Marroquín|Martín|Martinez|Martínez|Medina|Méndez|Mendoza|Molina|Morales|Moreno|Muñoz|Narvaez|Navarro|Núñez|Ortega|Ortiz|Ortíz|Peña|Perez|Pérez|Ramírez|Ramos|Reyes|Rivera|Rodriguez|Rodríguez|Rojas|Romero|Rosario|Rubio|Ruiz|Ruíz|Salazar|Sanchez|Sánchez|Santana|Santiago|Santos|Sanz|Serrano|Soto|Suárez|Toro|Torres|Vargas|Vasquez|Vásquez|Vázquez|Velásquez)
+
+
+
+|
+
+
+kHispanicLastNameConjunctionCharacteristicsRe =>
+ \s(?:y|e|i)\s
+
+
+
+)
+
+
+ParseHispanicFullNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ kHonorificPrefixRe =>
+ (?:Master|Mr\.?|Miss\.?|Mrs\.?|Missus|Ms\.?|Mx\.?|M\.?|Ma'am|Sir|Gentleman|Sire|Mistress|Madam|Ma'am|Dame|Lord|Lady|Esq|Excellency|Excellence|Her Honour|His Honour|Hon\.?|The Right Honourable|The Most Honourable|Dr\.?|PhD|DPhil|MD|DO|Prof\.|Professor|QC|CL|Chancellor|Vice-Chancellor|Principle|Principal|President|Master|Warden|Dean|Regent|Rector|Provost|Director|Chief Executive|Imām|Shaykh|Muftī|Hāfiz|Hāfizah|Qārī|Mawlānā|Hājī|Sayyid|Sayyidah|Sharif|Eminent|Venerable|His Holiness|His Holiness|His All Holiness|His Beatitude|The Most Blessed|His Excellency|His Most Eminent Highness|His Eminence|Most Reverend Eminence|The Most Reverend|His Grace|His Lordship|The Reverend|Fr|Pr|Br|Sr|Elder|Rabbi|The Reverend|Cantor|Chief Rabbi|Grand Rabbi|Rebbetzin|Herr|Frau|Fräulein|Dame|PD|Doktor|Magister|Ingenieur|1lt|1st|2lt|2nd|3rd|admiral|capt|captain|col|cpt|dr|gen|general|lcdr|lt|ltc|ltg|ltjg|maj|major|mg|pastor|prof|rep|reverend|rev|sen|st)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+given-name
+
+ (MATCH_LAZY_OPTIONAL)
+ kMultipleLazyWordsRe =>
+ (?:[^\s,]+(?:[^\S\r\n]+[^\s,]+)*?)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+ParseHispanicLastNameExpressionfamily-name
+
+ (MATCH_REQUIRED)
+ kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+kHispanicLastNameConjunctionsRe =>
+ (?:y|e|i)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+ParseOnlyLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ family-name
+
+ (MATCH_REQUIRED)
+ kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+kLastNameSuffixRe =>
+ (?:(?:b\.a|ba|d\.d\.s|dds|ii|iii|iv|ix|jr|m\.a|m\.d|md|ms|ph\.?d|sr|v|vi|vii|viii|x)\.?)
+
+
+
+ParseLastCommaFirstMiddleNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ kHonorificPrefixRe =>
+ (?:Master|Mr\.?|Miss\.?|Mrs\.?|Missus|Ms\.?|Mx\.?|M\.?|Ma'am|Sir|Gentleman|Sire|Mistress|Madam|Ma'am|Dame|Lord|Lady|Esq|Excellency|Excellence|Her Honour|His Honour|Hon\.?|The Right Honourable|The Most Honourable|Dr\.?|PhD|DPhil|MD|DO|Prof\.|Professor|QC|CL|Chancellor|Vice-Chancellor|Principle|Principal|President|Master|Warden|Dean|Regent|Rector|Provost|Director|Chief Executive|Imām|Shaykh|Muftī|Hāfiz|Hāfizah|Qārī|Mawlānā|Hājī|Sayyid|Sayyidah|Sharif|Eminent|Venerable|His Holiness|His Holiness|His All Holiness|His Beatitude|The Most Blessed|His Excellency|His Most Eminent Highness|His Eminence|Most Reverend Eminence|The Most Reverend|His Grace|His Lordship|The Reverend|Fr|Pr|Br|Sr|Elder|Rabbi|The Reverend|Cantor|Chief Rabbi|Grand Rabbi|Rebbetzin|Herr|Frau|Fräulein|Dame|PD|Doktor|Magister|Ingenieur|1lt|1st|2lt|2nd|3rd|admiral|capt|captain|col|cpt|dr|gen|general|lcdr|lt|ltc|ltg|ltjg|maj|major|mg|pastor|prof|rep|reverend|rev|sen|st)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+family-name
+
+ (MATCH_REQUIRED)
+ kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+\s*,\s*
+
+
+given-name
+
+ (MATCH_OPTIONAL)
+ kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+additional-name
+
+ (MATCH_LAZY_OPTIONAL)
+ kMultipleLazyWordsRe =>
+ (?:[^\s,]+(?:[^\S\r\n]+[^\s,]+)*?)
+
+
+
+ParseFirstMiddleLastNameExpression)
+
+ name
+
+ (MATCH_REQUIRED)
+ kHonorificPrefixRe =>
+ (?:Master|Mr\.?|Miss\.?|Mrs\.?|Missus|Ms\.?|Mx\.?|M\.?|Ma'am|Sir|Gentleman|Sire|Mistress|Madam|Ma'am|Dame|Lord|Lady|Esq|Excellency|Excellence|Her Honour|His Honour|Hon\.?|The Right Honourable|The Most Honourable|Dr\.?|PhD|DPhil|MD|DO|Prof\.|Professor|QC|CL|Chancellor|Vice-Chancellor|Principle|Principal|President|Master|Warden|Dean|Regent|Rector|Provost|Director|Chief Executive|Imām|Shaykh|Muftī|Hāfiz|Hāfizah|Qārī|Mawlānā|Hājī|Sayyid|Sayyidah|Sharif|Eminent|Venerable|His Holiness|His Holiness|His All Holiness|His Beatitude|The Most Blessed|His Excellency|His Most Eminent Highness|His Eminence|Most Reverend Eminence|The Most Reverend|His Grace|His Lordship|The Reverend|Fr|Pr|Br|Sr|Elder|Rabbi|The Reverend|Cantor|Chief Rabbi|Grand Rabbi|Rebbetzin|Herr|Frau|Fräulein|Dame|PD|Doktor|Magister|Ingenieur|1lt|1st|2lt|2nd|3rd|admiral|capt|captain|col|cpt|dr|gen|general|lcdr|lt|ltc|ltg|ltjg|maj|major|mg|pastor|prof|rep|reverend|rev|sen|st)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+given-name
+
+ (MATCH_OPTIONAL)
+ kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+additional-name
+
+ (MATCH_LAZY_OPTIONAL)
+ kMultipleLazyWordsRe =>
+ (?:[^\s,]+(?:[^\S\r\n]+[^\s,]+)*?)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+family-name
+
+ (MATCH_REQUIRED)
+ kOptionalLastNamePrefixRe =>
+ (?:(?:a|ab|af|av|ap|abu|aït|al|ālam|aust|austre|bar|bath|bat|ben|bin|ibn|bet|bint|binti|binte|da|das|de|degli|dele|del|du|della|der|di|dos|du|e|el|fetch|vetch|fitz|i??|kil|gil|de le|de la|la|le|lille|lu|m|mac|mc|mck|mhic|mic|mala|mellom|myljom|na|ned|nedre|neder|nic|ni|nin|nord|norr|ny|o|ua|ui|opp|upp|öfver|ost|öst|öster|øst|øst|østre|över|øvste|øvre|øver|öz|pour|putra|putri|setia|tor|söder|sør|sønder|sør|syd|søndre|syndre|søre|ter|ter|tre|van|van der|väst|väster|verch|erch|vest|vestre|vesle|vetle|von|zu|von und zu)\s)?
+
+
+
+kSingleWordRe =>
+ (?:[^\s,]+)
+
+
+
+kWhitespaceSeparator =>
+ (?:^|\s+)
+
+
+
+kLastNameSuffixRe =>
+ (?:(?:b\.a|ba|d\.d\.s|dds|ii|iii|iv|ix|jr|m\.a|m\.d|md|ms|ph\.?d|sr|v|vi|vii|viii|x)\.?)
+
+
+
+ParsePostalCodeOptionalSeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRe =>
+ (?:\d{5})
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRe =>
+ (?:\d{4})
+
+
+
+ParsePostalCodeMandatorySeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+ParsePostalCodeMandatorySeparatorExpression)
+
+ postal-code
+
+ (MATCH_REQUIRED)
+ postal-code-prefix
+
+ (MATCH_REQUIRED)
+ kZipPrefixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+kZipCodeSeparatorsRe =>
+ (?:[\s-]+)
+
+
+
+postal-code-suffix
+
+ (MATCH_OPTIONAL)
+ kZipSuffixValueRekAlphaNumericSequenceRe =>
+ (?:[^\W_]+)
+
+
+
+
+