我的輸入是likethis:「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"]
我不知道這個非貪婪的選項,我接受你的答案,因爲它是最完整的。謝謝 – AsTeR 2013-04-27 16:00:22