Как я могу проверить код культуры с регулярным выражением?
Я действительно не понимаю регулярное выражение, и я также не могу найти правило регулярного выражения для проверки кодов культуры как: en-GB, en-UK, az-AZ-Cyrl, others.
Как я могу проверить эти коды с регулярным выражением?
Ответы
Ответ 1
Вы можете проверить с помощью этого:
/^[a-z]{2,3}(?:-[A-Z]{2,3}(?:-[a-zA-Z]{4})?)?$/
Вот как это работает
^ <- Starts with
[a-z] <- From a to z (lower-case)
{2,3} <- Repeated at least 2 times, at most 3
(?: <- Non capturing group
- <- The "-" character
[A-Z] <- From a to z (upper-case)
{2,3} <- Repeated at least 2 times, at most 3
(?: <- Non capturing group
- <- The "-" character
[a-zA-Z] <- from a to Z (case insensitive)
{4} <- Repeated 4 times
) <- End of the group
? <- Facultative
) <- End of the group
? <- Facultative
$ <- Ends here
Вы также можете заменить последнюю группу без захвата на (?:-(?:Cyrl|Latn))?
, если единственными параметрами являются Cyrl и Latn
Ответ 2
Это то, что я нашел в Dublin Core/W3C xsd: http://www.w3.org/2001/XMLSchema
<xs:simpleType name="language" id="language">
<xs:annotation>
<xs:documentation
source="http://www.w3.org/TR/xmlschema-2/#language"/>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern
value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
id="language.pattern">
<xs:annotation>
<xs:documentation
source="http://www.ietf.org/rfc/rfc3066.txt">
pattern specifies the content of section 2.12 of XML 1.0e2
and RFC 3066 (Revised version of RFC 1766).
</xs:documentation>
</xs:annotation>
</xs:pattern>
</xs:restriction>
</xs:simpleType>
Тогда шаблон выглядит следующим образом:
[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*
Ответ 3
В соответствии с https://en.wikipedia.org/wiki/IETF_language_tag regexp может быть:
/^[a-z]{2,3}(?:-[a-zA-Z]{4})?(?:-[A-Z]{2,3})?$/
Из wiki:
один основной языковой subtag, основанный на двухбуквенном коде языка из ISO 639-1 (2002) или трехбуквенный код из ISO 639-2 (1998), ISO 639-3 (2007) или ISO 639- 5 (2008), или зарегистрирован в процессе BCP 47 и состоит из пяти-восьми букв;
дополнительный script subtag, основанный на четырехбуквенном коде script от ISO 15924 (обычно написанный в заголовке);
необязательный региональный субтитр на основе двухбуквенного кода страны из ISO 3166-1 альфа-2 (обычно написанный в верхнем регистре) или трехзначный код из М .49 ООН для географических регионов;
Ответ 4
^ (я: AF | AX | AL | ДЗ | AS | AD | AO | AI | AQ | AG | AR | AM | AW | AU | AT | AZ | BS | BH | BD | BB | BY | BE | BZ | BJ | BM | BT | BO | BQ | BA | BW | BV | BR | IO | BN | BG | BF | BI | КН | CM | CA | CV | KY | CF | TD | CL | CN | CX | CC | CO | KM | CG | CD | CK | CR | CI | HR | CU | CW | CY | CZ | DK | DJ | DM | DO | ЕС | EG | SV | GQ | ER | EE | ET | FK | FO | FJ | FI | FR | GF | PF | TF | GA | GM | GE | DE | GH | GI | GR | GL | GD | GP | GU | GT | GG | GN | GW | GY | HT | HM | VA | HN | HK | HU | IS | В | ID | IR | IQ | IE | IM | IL | IT | JM | JP | JE | JO | KZ | KE | KI | КП | KR | KW | KG | LA | LV | LB | LS | LR | LY | LI | LT | LU | МО | MK | MG | MW | МОЕ | MV | ML | MT | MH | MQ | MR | MU | УТ | MX | FM | MD | MC | MN | ME | MS | MA | MZ | MM | NA | NR | NP | NL | NC | NZ | NI | NE | NG | NU | NF | MP | NO | ОМ | PK | PW | PS | PA | PG | PY | PE | PH | PN | PL | PT | PR | QA | RE | RO | RU | RW | BL | SH | КН | LC | MF | PM | VC | WS | SM | ST | SA | SN | РС | SC | SL | SG | SX | СК | СИ | СО | ТАК | З.А. | ОО | СС | ES | ЛК | SD | SR | SJ | С.З. | ГП | СН | С.Ю. | TW | TJ | TZ | TH | TL | TG | TK | К | TT | TN | TR | TM | TC | TV | UG | UA | AE | GB | США | UM | UY | UZ | VU | VE | VN | VG | VI | WF | EH | YE | ZM | ZW) $