我正在使用适用于Android的Google Place API并使用自动填充功能
一切正常,但是当我得到这里显示的结果时,我没有城市和邮政编码信息.
private ResultCallback<PlaceBuffer> mUpdatePlaceDetailsCallback
= new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (!places.getStatus().isSuccess()) {
// Request did not complete successfully
Log.e(TAG, "Place query did not complete. Error: " + places.getStatus().toString());
return;
}
// Get the Place object from the buffer.
final Place place = places.get(0);
// Format details of the place for display and show it in a TextView.
mPlaceDetailsText.setText(formatPlaceDetails(getResources(), place.getName(),
place.getId(), place.getAddress(), place.getPhoneNumber(),
place.getWebsiteUri()));
Log.i(TAG, "Place details …Run Code Online (Sandbox Code Playgroud) 我已经尝试了几个正则表达式,但有时候一些有效的邮政编码会被拒绝.
搜索互联网,维基百科和SO,我只能找到正则表达式验证解决方案.
有没有使用正则表达式的验证方法?在任何语言中,我想这很容易移植.
我认为最简单的方法是与邮政编码数据库进行比较,但需要从可靠的来源定期维护和更新.
编辑:为了帮助未来的访问者并让你不再发布任何正则表达式,这里是我测试的一个正则表达式(截至2013-04-24),适用于Code Point中的所有邮政编码(请参阅@MikkelLøkke的回答):
//PHP PCRE (it was on Wikipedia, it isn't there anymore; I might have modified it, don't remember).
$strPostalCode=preg_replace("/[\s]/", "", $strPostalCode);
$bValid=preg_match("/^(GIR 0AA)|(((A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|((E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(SW|W)([2-9]|[1-9][0-9])|EC[1-9][0-9])[0-9][ABD-HJLNP-UW-Z]{2})$/i", $strPostalCode);
Run Code Online (Sandbox Code Playgroud) 获取给定国家/地区的给定邮政编码的坐标(纬度/经度)的最完整,最精确和最可靠的方法是什么?我需要提出很多请求,因此API限制率很高(甚至可能不存在)会很有用.
GeoNames转储很酷,但似乎有太多重复的坐标(示例),并且它们的数据库似乎也缺少特定国家/地区的一些ZIP /邮政编码.
还有其他(可靠的)替代品吗?
在我阅读Meta问题时,我遇到了这个链接:
http://query.yahooapis.com/v1/public/yql?q=select%20%2A%20from%20geo.places%20where%20text%3D%22Jyv%C3%A4skyl%C3%A4%22&format=xml
Run Code Online (Sandbox Code Playgroud)
我之前听说过YQL,但我不知道我可以将它用于GeoCode地址,所以我搜索了一下,我发现了这个非常有趣的信息:
使用限制
每个应用程序限制(由您的访问密钥标识):每天100,000个呼叫
每IP限制:/ v1/public /:每小时1,000次通话;/v1/yql /:每小时10,000次呼叫
有谁知道在哪里可以获得使用YQL到GeoCode地址的更具体信息?
我正在使用单独的条带元素创建付款表单:
var stripe = Stripe(...);
var elements = stripe.elements();
...
var postalCode = elements.create('postalCode');
postalCode.mount('#postalCode');
Run Code Online (Sandbox Code Playgroud)
这将创建一个只接受数字的字段.但是,英国的邮政编码也包含字母.我怎么也允许这些?我希望用户能够在世界上输入几乎任何可能的邮政编码.
我希望能够验证英国邮政编码,理想情况下,我希望通过以下案例:
我有以下正则表达式模式:
^(GIR 0AA)|(((A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|((E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(SW|W)([2-9]|[1-9][0-9])|EC[1-9][0-9])( [0-9][ABD-HJLNP-UW-Z]{2})?)$
Run Code Online (Sandbox Code Playgroud)
此模式允许使用3或4和6或7位数的邮政编码(因此,只有3或4位数的外向代码,或6或7位数的完整邮政编码),但它不允许使用第4和第6点(空格包含的邮政编码)被省略了)
我也有这种模式:
^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKPS-UW]) {0,1}[0-9][ABD-HJLNP-UW-Z]{2})$
Run Code Online (Sandbox Code Playgroud)
这种模式允许6或7位数的邮政编码,我们没有空格,但不适用于不完整的邮政编码(仅限外向代码)
很抱歉在这里已经提到了一个已经广泛涵盖的问题,但是我找到的所有例子都符合我的要求,但不是全部.
理想情况下,我想要一个正则表达式模式,允许3,4,6和7位数的邮政编码,我们没有空格.
更新:
我已经完成了我的通过案件,因为我认为它最初并不完全全面.其基本概念应遵循英国邮政编码模式,并验证以下任何组合:
1 Letter 1 Number
1 Letter 2 Numbers
2 Letters 1 Number
2 Letters 1 Number 1 Letter
2 Letters 2 Numbers
1 Letter 1 Number (OptionalSpace) 1 Number 2 Letters
1 Letter 2 Numbers (OptionalSpace) 1 Number 2 Letters
2 Letters 1 Number (OptionalSpace) …Run Code Online (Sandbox Code Playgroud) 我有一个表单,我的用户需要输入以下位置数据:
为了简化此表格的完成,我想通过让用户只输入他的国家,邮政编码和门牌号码来自动填写完全合格的地址(addrses线路,城市,州省等).
这三项是否足以在美国查找地址是否正确?或者是否需要更少或更多的信息?这个问题的答案对每个国家都有所不同吗?此外,是否有可用于此目的的服务,API或库(例如Google Maps或OpenStreetMap)?
zipcode google-maps postal-code openstreetmap street-address
我需要以每个国家/地区为基础,以特定格式验证邮政编码.
例如:
$postcode_validation = array
(
'Australia' => array('NNNN'),
'Bahrain' => array('NNN', 'NNNN'),
'Netherlands' => array('NNNN AA'),
'United States' => array('NNNNN', 'NNNNN-NNNN', 'NNNNN-NNNNNN')
);
Run Code Online (Sandbox Code Playgroud)
每个国家/地区可以根据需要提供尽可能多的邮政编码格式变体; 哪里:
因此,如果我们采用Australia例如,它应该验证为true:
等等...
并且应该失败:
等等...
鉴于此,我正在尝试创建一个单一的函数,我可以使用它来验证给定国家/地区的邮政编码与邮政编码的所有变体.return true如果邮政编码与规则中的至少一个return false匹配并且如果不匹配,则应该是函数.
所以,这就是我尝试这样做的方式(从简单的方法开始):
<?php
// mapping
$postcode_validation = array
(
'Australia' => array('NNNN'),
'Bahrain' => array('NNN', 'NNNN'),
'Netherlands' => array('NNNN AA'),
'United States' => array('NNNNN', 'NNNNN-NNNN', 'NNNNN-NNNNNN')
);
// helper function …Run Code Online (Sandbox Code Playgroud) 我检查了下面的链接和 API。所有这些都过时了,没有最新的数据。
似乎下面的 API 是由政府来源公开的,但文档部分并不多 -
如果有人可以指向链接以获取最新数据,这将起作用。至少我会开始。
我尝试了下面的链接,我从这个链接得到的数据已经过时了。
如果用户没有用空格写邮政编码,有没有办法知道在英国邮政编码中空格必须在哪里?
例如,如果输入是:EC1A1BB, W1A0AX, M11AE, B338TH, CR26XH, DN551PT那么输出必须是:EC1A 1BB, W1A 0AX, M1 1AE, B33 8TH, CR2 6XH, DN55 1PT。
谢谢
postal-code ×10
php ×2
zipcode ×2
addressbook ×1
android ×1
api ×1
c# ×1
city ×1
geocoding ×1
geolocation ×1
google-maps ×1
javascript ×1
regex ×1
web-services ×1