2017-05-25 77 views
1

的正则表达式航空公司指定符由两个字母数字字符(英文字母或数字中的任何字母)和一个可选字母组成。航班号由1到4个数字字符(数字)和一个可选的单字母操作后缀组成。所有的字符都是大写的。需要查找航班号

这是我的正则表达式到目前为止:

(?<!([A-Z0-9]))(([A-Z]{2}|[A-Z]\\d|\\d[A-Z])\\s?\\d{3,4})(?:\\D) 

这并不适用于下列输出工作:

IEL2 
9AI0923 

任何帮助表示赞赏。谢谢。

+4

翻译你的描述直接进入正则表达式,你会得到'[A-Z0-9] {2} [AZ]([0-9] {1, 4} [AZ]?)'。你的情况要复杂得多。航班号是否有更多限制条款不在您的描述中? – Blender

回答

4

根据您的描述,您可以使用这个表达式:

^[A-Z\d]{2}[A-Z]?\d{1,4}[A-Z]?$ 

RegEx Demo

无需使用任何回顾后或超前。

在Java中使用:?

final String re = "^[A-Z\\d]{2}[A-Z]?\\d{1,4}[A-Z]?$"; 
+0

为什么要用'^'和'$'来打扰?你不需要这些匹配。 –

+0

IMO尽管'matches()方法不需要它,但最好是明确的。有些读者可能会在PHP,Javascript等需要'^'和'$'的其他语言中使用此正则表达式。 – anubhava

+0

这个正则表达式符合问题中定义的要求,'A1B2'满足这个要求。如果有更多或不同的要求,OP可以更好地告诉我们。 – anubhava