2017-04-08 56 views
-1

我需要一個正則表達式來檢查PHP中的法語郵政編碼。法國的正則表達式郵政編碼

我有一個正則表達式,如:

/^(([\d]{2})|(2[abAB]))*(([\d]{2})|(2[abAB]))$/捕獲01至99或2a或2b

^[0-9]{5}$捕獲01000到99000

^(0[1-9]|[1-8]\d|9[0-5])\d{3}$捕獲01000到95999

在現實中我需要這3個正則表達式的組合,
可以捕獲01至95或01000至95000或971至978或984至989或2A或2a或2B或2b

任何想法?
非常感謝

+0

如此接近,但95000被接受,但不是95999,和2a/2a和2b/2B不工作。 – Buck

+0

非常完美,謝謝謝謝:D – Buck

回答

2

如何:

(?:0[1-9]|[13-8][0-9]|2[ab1-9]|9[0-5])(?:[0-9]{3})?|9[78][1-9](?:[0-9]{2})? 

看一看:根據您的要求https://fr.wikipedia.org/wiki/Code_postal_en_France

+0

只匹配5個郵政編碼,對不起:/ – Buck

+0

@Buck:'86000'存在,它是普埃蒂耶州的維埃納省。 – Toto

+0

@Buck:查看我的編輯,我已將城市編號設置爲可選,因此它僅匹配部門或城市郵政編碼。 – Toto

1

我想:

^(?:(?:(?:0[1-9]|[1-8]\d|9[0-4])(?:\d{3})?)|97[1-8]|98[4-9]|‌​‌​2[abAB])$ 

將滿足您的要求。你的正則表達式與範圍和空格有關。

演示:https://regex101.com/r/wFnEDj/2/

相關問題