繁体   English   中英

正则表达式在Ruby 1.8.7中找不到匹配项,但在1.9.2中却找到了匹配项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM