我正在使用正则表达式来匹配所有有效的国际航班号以及航班代码。根据{{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)
组)是相同的,以缩短它。你会如何缩短这个正则表达式?
答案 0 :(得分:2)
您可以在Javascript和Ruby中使用它:
/^([^\W_]{2}[a-z]?)?(\d{4})[a-z]?$/i
标记i
表示不区分大小写,您仍然可以获取数字。整个飞行代码位于数组的第一个元素中,第二个元素中的数字。
由于[^\W]
等同于\w
,即[a-z0-9_]
,如果您不计算外国字符,则使用[^\W_]
将仅表示[a-z0-9]
忽略外来字符。