我今天在我们的遗留代码中遇到了一个错误,它使用Perl5Compiler
并Perl5Matcher
使用以下正则表达式来验证英国邮政编码:
((?i)(([A-Z]{2}[0-9]{1,2})|([A-Z]{1,2}[0-9][A-Z])|([A-Z][0-9]{1,2}))\\s([0-9][A-Z]{2})|(BFPO\\s\\d{1,4})|(GIR\\s0AA))
但是,它无法正确验证诸如“G12 4NNT”之类的邮政编码(在这种情况下,最后一部分只能是数字后跟 2 个字母)。我通过使用java.util.regex.Pattern
正确使用上述正则表达式并通过所有单元测试的类来解决此问题。
但是,现在我很好奇为什么它不适用于Perl5
那些。这两个 API 使用的正则表达式语法有根本区别吗?