避免在语言环境正则表达式测试中使用捕获组?

时间:2013-01-09 16:03:40

标签: php regex locale

正则表达式仅用于仅在字符串有效时进行检查,而不是用于捕获字符串的任何部分:

  

ISO 639-1双字母小写文化代码和ISO 3166-1双字母大写亚文化代码,或ISO 639-1小写文化代码。

例如,itit-IT。我结束了(我的正则表达式不太好):

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

使用捕获组(3166-1部分)。该组真的需要吗?如何避免使用它?

1 个答案:

答案 0 :(得分:3)

您需要使用

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

要定义非捕获组,请使用(?:)