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

Java 修改正则表达式以匹配各种ISO语言代码,java,regex,Java,Regex,我希望使用正则表达式匹配以下字符串: es us fr(0个破折号) fr ca(1个破折号) xx-xx-xx(两条破折号) 我有一个正则表达式的起点:([a-z])+-([a-z])+-([a-z])+,它与上面的xx示例相匹配,但不包括带1个破折号或更少破折号的字符串。那么,如何使其与上述示例中的fr-ca或fr或en-us匹配?注意:应该允许使用所有字符,而不仅仅是fr ca或fr这可能是重复的,但我不确定要搜索什么。无论如何,这里有一个简单的答案:^[a-zA-Z]{2}(?:-[

我希望使用正则表达式匹配以下字符串:

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

我有一个正则表达式的起点:
([a-z])+-([a-z])+-([a-z])+
,它与上面的xx示例相匹配,但不包括带1个破折号或更少破折号的字符串。那么,如何使其与上述示例中的
fr-ca
fr
en-us
匹配?注意:应该允许使用所有字符,而不仅仅是
fr ca
fr
这可能是重复的,但我不确定要搜索什么。无论如何,这里有一个简单的答案:
^[a-zA-Z]{2}(?:-[a-zA-Z]{2}){0,2}$


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


若要为任何段提供匹配的大小写,请使用:

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

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

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

[a-z][a-z]([a-z][a-z]([a-z][a-z])?
您缺少可选条件
[a-z][a-z]([a-z][a-z]([a-z][a-z])?
您缺少可选条件不幸的是,这也将匹配xx或更多的破折号。还有,非俘虏小组的目的是什么?@KevinWelker它会。。。限制是多少?3.非捕获组在那里,因此我可以使用
*
重复匹配itI。我更新了我的答案,最多只允许3个
xx
模式。幸运的是,这也将匹配xx xx xx xx或更多破折号。还有,非俘虏小组的目的是什么?@KevinWelker它会。。。限制是多少?3.非捕获组在那里,因此我可以使用
*
重复匹配itI更新了我的答案,最多只允许3个
xx
模式