用于检查字符串是否为语言环境的正则表达式,如 locale_Culture

Regexpression for check if string is locale like locale_Culture

我想检查字符串是否是 enuk 等语言环境。我用这个 reg exp:

/^[a-z]{2}$/

但我想使用由区域设置和文化组成的区域设置来执行此操作,例如 en_USen_EN。我对正则表达式的了解太纯粹了,无法做到这一点。有人可以帮我吗?谢谢!

给你:

/^[a-z]{2}_[A-Z]{2}$/

这是正确的:)

/^[a-z]{2}_[A-Z]{2}$/
/^[a-z]{2}(?:_[A-Z]{2})?$/

解释:

  • ^ 注释 file/string
  • 的开始
  • [a-z]{2} 检查 enbr
  • (?:_[A-Z]{2})? 匹配 en_USen_EN 的可选非捕获组 等等
  • $ 注释 file/string
  • 的结尾

要使第二部分成为强制性的,请省略最新的 ?

您想验证哪种区域设置标识符? 不止一个。

例如 Linux 你有 en_US.UTF-8 BCP 47 允许使用更复杂的方式(例如 rs_Latn_RS,或 ja@calendar=japanese)(https://tools.ietf.org/html/bcp47)

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

Locales are identified using RFC 4646 language tags

http://php.net/manual/en/class.locale.php

如果是这样,那么用正则表达式处理可能太复杂了。