修改正则表达式以匹配各种ISO语言代码

时间:2018-09-24 20:41:48

标签: java regex

我有一些要使用正则表达式匹配的字符串:

  • es-us
  • fr(0破折号)
  • fr-ca(1个破折号)
  • xx-xx-xx(两个破折号)

我有一个正则表达式的起点,如:([a-z])+-([a-z])+-([a-z])+,它与上面的xx-xx-xx示例匹配,但是排除了破折号为1或更少的字符串。因此,在上面的示例中,我如何使其也匹配fr-cafren-us?注意:应该允许所有字符,而不仅仅是fr-cafr

2 个答案:

答案 0 :(得分:2)

这可能是重复的,但是我不确定要搜索什么。无论哪种方式,这都是一个简单的答案:^[a-zA-Z]{2}(?:-[a-zA-Z]{2}){0,2}$

Demo

答案 1 :(得分:1)

要使任何句段都具有匹配的大小写,请使用:

^([a-z]{2}|[A-Z]{2})(?:-([a-z]{2}|[A-Z]{2})){0,2}$