我试图在Ruby中验证英国邮政编码。我在stackoverflow上偶然发现了这个正则表达式:
(GIR 0AA)|((([A-Z-[QVX]][0-9][0-9]?)|(([A-Z-[QVX]][A-Z-[IJZ]][0-9][0-9]?)|(([A-Z-[QVX]][0-9][A-HJKSTUW])|([A-Z-[QVX]][A-Z-[IJZ]][0-9][ABEHMNPRVWXY])))) [0-9][A-Z-[CIKMOV]]{2})
它在Ruby 1.9.2和2.0.0中很有用(见http://rubular.com/r/GKgLdIFvNJ),但我使用的是1.8.7。我该怎么办?
任何建议都将不胜感激。谢谢!
答案 0 :(得分:2)
你在哪里找到这个表达?我认为它不是为Ruby编写的。
Ruby不支持字符类减法。因此1.9.2接受[A-Z- [QVX]]但未按预期工作。这些字符
1.8.7 不完全接受此表达式。
您必须重写所有这些字符范围:
[A-Z-[QVX]]
变为[A-PR-UWYZ]