缩短航班号正则表达式

时间:2013-10-03 19:06:11

标签: regex

我正在使用正则表达式来匹配所有有效的国际航班号以及航班代码。根据{{​​3}},有效的航班代码格式为XX(a)NNNN(a),其中X = [A-Za-z0-9]a = [A-Za-z]N = [0-9]

由于我想匹配航班代码和数字,因此XX(a)(a)可选。第一个(a)是完全可选的,但前两个XX必须存在才能使(a)匹配(如果存在)。我做了以下正则表达式,但如果可能的话我想缩短它。

^(([A-Za-z0-9]{2}([A-Za-z])?)?)([0-9]{4})(([A-Za-z]{1})?)$

我考虑过制作匹配组,因为某些组(如数字之前和之后的(a)组)是相同的,以缩短它。你会如何缩短这个正则表达式?

1 个答案:

答案 0 :(得分:2)

您可以在Javascript和Ruby中使用它:

/^([^\W_]{2}[a-z]?)?(\d{4})[a-z]?$/i

标记i表示不区分大小写,您仍然可以获取数字。整个飞行代码位于数组的第一个元素中,第二个元素中的数字。

由于[^\W]等同于\w,即[a-z0-9_],如果您不计算外国字符,则使用[^\W_]将仅表示[a-z0-9]忽略外来字符。