Java 需要找到航班号的正则表达式
航空公司标志由两个字母数字字符(英文字母表中的任何字母或数字)和一个可选字母组成。航班号由1到4个数字字符(数字)和可选的一个字母操作后缀组成。所有字符均为大写 这是到目前为止我的正则表达式:Java 需要找到航班号的正则表达式,java,regex,Java,Regex,航空公司标志由两个字母数字字符(英文字母表中的任何字母或数字)和一个可选字母组成。航班号由1到4个数字字符(数字)和可选的一个字母操作后缀组成。所有字符均为大写 这是到目前为止我的正则表达式: (?<!([A-Z0-9]))(([A-Z]{2}|[A-Z]\\d|\\d[A-Z])\\s?\\d{3,4})(?:\\D) 感谢您的帮助。谢谢。根据您的描述,您可以使用以下正则表达式: ^[A-Z\d]{2}[A-Z]?\d{1,4}[A-Z]?$ 没有必要使用任何“向后看”或“向前看”
(?<!([A-Z0-9]))(([A-Z]{2}|[A-Z]\\d|\\d[A-Z])\\s?\\d{3,4})(?:\\D)
感谢您的帮助。谢谢。根据您的描述,您可以使用以下正则表达式:
^[A-Z\d]{2}[A-Z]?\d{1,4}[A-Z]?$
没有必要使用任何“向后看”或“向前看”
在Java使用中:
final String re = "^[A-Z\\d]{2}[A-Z]?\\d{1,4}[A-Z]?$";
将描述直接转换为正则表达式,您将得到
[a-Z0-9]{2}[a-Z]?([0-9]{1,4}[a-Z]?)
。你的要复杂得多。您描述中没有的航班号有更多限制吗?为什么要费心于^
和$
?匹配时不需要这些。尽管matches()
方法不需要它,但最好是显式的。一些读者可能会在其他语言中使用此正则表达式,如PHP、Javascript,其中需要^
和$
。此正则表达式符合问题中定义的要求,并且A1B2
满足该要求。OP可以更好地告诉我们是否有额外或不同的要求。我忽略了这一切。我从来没有见过这样的航班号。
final String re = "^[A-Z\\d]{2}[A-Z]?\\d{1,4}[A-Z]?$";