什么是与文化名称相匹配的正则表达式?

时间:2010-09-09 12:18:19

标签: regex

我想使用正则表达式来过滤文化名称(例如en-US或pt-BR)。任何人都有任何想法?

3 个答案:

答案 0 :(得分:13)

试试这个:

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

或更一般(见RFC 4647):

^[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*$

答案 1 :(得分:1)

如果您希望遵循文化名称的RFC 4646格式(<languagecode2>-<country/regioncode2>,其中<languagecode2>是语言代码,<country/regioncode2>是亚文化代码)

示例:&#34; zh&#34;,&#34; en-UK&#34;,&#34; fr&#34;,&#34; fr-FR&#34 ;,...

使用此正则表达式:

^[a-z]{2}(-[A-Z]{2})* 

C#代码示例

Regex.IsMatch(culture, @"^[a-z]{2}(-[A-Z]{2})*$")

答案 2 :(得分:0)

@Gumbo是对的。测试:

In [1]: import re

In [2]: reg = re.compile("^[a-z]{2}-[A-Z]{2}$")

In [3]: url = 'en-US'

In [4]: m = reg.match(url)

结果显示它匹配。