.htaccess Htaccess URL重写捕获2或5个字符(但不是3或4个)

.htaccess Htaccess URL重写捕获2或5个字符(但不是3或4个),.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我当前捕获所选语言的重写规则如下: RewriteRule ^language/([A-Za-z-]{2,5})/?$ /yadayada.php?hl=$1 [QSA,L] 因此,它将捕获以下内容: /语言/es(西班牙语) /语文/德语 但是,语言代码只能包含2个字母(例如:en、es、de)或5个字母(例如:zh-TW)。问题是它应该不接受其中任何一个(3个或4个字母,或全部5个小写字母): /语言/esp(三个字母) /语言/zh-tw(第二部分使用小写字母,必须为zh-tw)

我当前捕获所选语言的重写规则如下:

RewriteRule ^language/([A-Za-z-]{2,5})/?$ /yadayada.php?hl=$1 [QSA,L]
因此,它将捕获以下内容:

  • /语言/es(西班牙语)
  • /语文/德语
但是,语言代码只能包含2个字母(例如:en、es、de)或5个字母(例如:zh-TW)。问题是它应该接受其中任何一个(3个或4个字母,或全部5个小写字母):

  • /语言/esp(三个字母)
  • /语言/zh-tw(第二部分使用小写字母,必须为zh-tw)

有什么想法吗?谢谢

那我就把它分开:

RewriteRule ^language/([a-z]{2}|[a-z]{2}-[A-Z]{2})/?$ /yadayada.php?hl=$1 [QSA,L]
如果有两个小写字母(例如“de”或“en”或“fr”)如果有两个小写字母后跟破折号和两个大写字母(例如“zh TW”或“zh CN”),则匹配