【问题标题】:Need to find regex for flight number需要查找航班号的正则表达式
【发布时间】:2017-05-25 05:18:04
【问题描述】:

航空公司代码由两个字母数字字符(英文字母表中的任何字母或数字)后跟一个可选字母组成。航班号由 1 到 4 个数字字符(digit)和可选的一个字母操作后缀组成。所有字符都是大写的。

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

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

这不适用于以下输出:

IEL2
9AI0923

感谢任何帮助。谢谢。

【问题讨论】:

  • 将你的描述直接翻译成正则表达式,你会得到[A-Z0-9]{2}[A-Z]?([0-9]{1,4}[A-Z]?)。你的要复杂得多。您的描述中没有对航班号的更多限制?

标签: java regex


【解决方案1】:

根据您的描述,您可以使用此正则表达式:

^[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]?$";

【讨论】:

  • 为什么要打扰^$?你不需要这些来匹配。
  • IMO 最好是明确的,尽管 matches() 方法不需要它。一些读者可能会在需要 ^$ 的其他语言(如 PHP、Javascript)中使用此正则表达式。
  • 此正则表达式符合问题中定义的要求,A1B2 满足该要求。如果有其他或不同的要求,OP 可以更好地告诉我们。
  • 我忽略了这可能是所有数字的事情。不是我见过这样的航班号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 2013-04-06
  • 1970-01-01
  • 2011-01-02
  • 2015-10-13
  • 2011-10-02
相关资源
最近更新 更多