2017-04-08 53 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/

相关问题