法国正则表达式邮政编码

时间:2017-04-08 18:12:35

标签: php regex pcre zipcode

我需要一个正则表达式来检查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

任何想法?
非常感谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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/