簡體   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