[英]Regex don't find matches in Ruby 1.8.7 but does in 1.9.2
我正在尝试验证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。 我能做什么?
任何建议,将不胜感激。 谢谢!
您在哪里找到这个表达? 我认为它不是为Ruby编写的。
Ruby不支持字符类减法。 因此1.9.2接受[AZ- [QVX]]但未按预期工作 。 这些字符未从char类中排除( 请参阅rubular ,QVX仍然匹配)
1.8.7完全不接受该表达式。
您必须像这样重写所有这些字符范围:
[AZ-[QVX]]
变为[A-PR-UWYZ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.