Php 用于检查字符串是否与区域设置类似的Regexpression\u区域性

Php 用于检查字符串是否与区域设置类似的Regexpression\u区域性,php,regex,localization,internationalization,Php,Regex,Localization,Internationalization,我想检查字符串是否是类似于en,uk等的区域设置。我通过以下注册表执行此操作: /^[a-z]{2}$/ 但是我想用地区和文化来做这件事,比如en_-US,或者en_-en。我对正则表达式的了解太单纯了,无法做到这一点。有人能帮我吗?谢谢 给你: /^[a-z]{2}_[A-Z]{2}$/ /^[a-z]{2}_[A-Z]{2}$/ 这是对的:) 说明: ^注意文件/字符串的开头 [a-z]{2}检查en,br等 (?:[A-Z]{2})可选非捕获组以匹配en_-US,en_-en 等等

我想检查字符串是否是类似于
en
uk
等的区域设置。我通过以下注册表执行此操作:

/^[a-z]{2}$/
但是我想用地区和文化来做这件事,比如
en_-US
,或者
en_-en
。我对正则表达式的了解太单纯了,无法做到这一点。有人能帮我吗?谢谢

给你:

/^[a-z]{2}_[A-Z]{2}$/
/^[a-z]{2}_[A-Z]{2}$/
这是对的:)

说明:

  • ^注意文件/字符串的开头
  • [a-z]{2}检查
    en
    br
  • (?:[A-Z]{2})可选非捕获组以匹配
    en_-US
    en_-en
    等等
  • $注意文件/字符串的结尾

若要强制第二部分,请省略最新的

要验证哪种语言环境标识符? 不止一个

例如,在Linux上有en_US.UTF-8 BCP 47允许更复杂的东西(例如rs_Latn_rs,或ja@calendar=日语)()

如果需要PHP语言环境,则需要BCP 47语法(RFC 4646是BCP 47的一部分):

区域设置使用RFC4646语言标记进行标识


如果是这样的话,那么它可能太复杂,无法用regexp处理。

Mhm,我想,我的错。@Djip它匹配,但不匹配全部。这意味着它仍然匹配。这是两个不同的概念。您的代码需要一个额外的“$”来确定匹配的结束(与“^”相反)
/^[a-z]{2}(?:_[A-Z]{2})?$/