Reg Expression用于检查字符串是否与locale Culture一样

时间:2015-02-24 09:59:26

标签: php regex localization internationalization

我想检查字符串是否是enuk等语言环境。我通过此reg exp来做:

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

但是我希望通过区域设置来实现这一点,包括来自语言环境和文化的内容,例如en_USen_EN。我对正则表达式的了解太过纯粹,无法做到这一点。有人能帮助我吗?谢谢!

4 个答案:

答案 0 :(得分:4)

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

例如在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的一部分):

  

使用RFC 4646语言标记识别语言环境

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

如果是这种情况,那么使用正则表达式来处理它可能太复杂了。

答案 1 :(得分:1)

你走了:

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

答案 2 :(得分:1)

这是正确的:)

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

答案 3 :(得分:1)

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

<强>解释

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

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