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