我的输入是这样的:“78003 Versailles CEDEX 3 - France”。这里 78003 是邮政编码,凡尔赛是城市,CEDEX 3 是可选部分,表示这是一个特殊地址。
目前我的正则表达式获取邮政编码、城市和国家,但我无法获取 CEDEX 部分。我想我被一个贪婪的表情欺骗了,但我不知道如何克服它。
var parseZipCityAndCountryRe = /(\d*)\s*(.*)(?:\s*CEDEX\s*(\d*))?\s*-\s*(.*)/i;
parseZipCityAndCountryRe.exec("78003 Versailles cedex 120 - France")
// current output
["78003 Versailles cedex 120 - France", "78003", "Versailles cedex 120 ", undefined, "France"]
// wished output
["78003 Versailles cedex 120 - France", "78003", "Versailles", "120", "France"]