Goyo Asked: 2020-02-19 14:41:24 +0800 CST 2020-02-19 14:41:24 +0800 CST 2020-02-19 14:41:24 +0800 CST 使用 javaScript 验证邮政编码 [关闭] 772 我如何验证邮政编码,也就是说,如果有确切的长度或验证它实际上是邮政编码的东西,这可以通过正则表达式或其他方式,但使用 JavaScript。 javascript 3 Answers Voted Javier Solis Guzman 2020-02-19T15:07:18+08:002020-02-19T15:07:18+08:00 如果您只想验证输入的文本是否符合邮政编码的格式,则只需创建一个正则表达式。 但是,如果您想知道您的邮政编码表达式是否接受该格式字符串,您将不得不从某个地方使用数据,搜索一下我发现了以下 api(墨西哥邮政编码) https://github.com/Munett/API-Postal-Codes 您只需要通过 ajax 请求请求并查看该文本是否有关联的位置,其余的将取决于您的应用程序的逻辑,根据您想要做什么 Best Answer jasilva 2020-02-19T15:08:01+08:002020-02-19T15:08:01+08:00 您可以使用此表达式^\d{4,5}$来指示它仅在与 4 位或 5 位数字进行比较时才有效。(墨西哥案例) 由于邮政编码在某些情况下通常在开头不写 0,例如4522 = 04522. 但是,了解邮政编码是否真的存在的唯一方法是拥有一个数据库或文件,其中包含您需要的国家/地区的邮政编码,并将它们与它进行比较。 如果你想要一个纯 JavaScript 解决方案,你可以在 json 中使用一个数组: [ 1050, 2050, 3050, 4050, 12000, 18010, 25010, 33050, 44504, 50900 ] 你只需要一个周期就能找到它 for(var i = 0; i < codigos_postales.length; i++) { if(codigos_postales[i] == valor_ingresado) { return true; } } 现在有一个问题,由于这个搜索很复杂O(n),如果用户搜索 cp 99999,他将不得不遍历整个列表,许多记录,所以我们可以选择二分搜索 function binarySearch(arreglo, buscado) { var m = Math.floor(arreglo.length / 2); if (arreglo[m] === buscado) { return true; } else if (arreglo[m] < buscado && arreglo.length > 1) { return binarySearch(arreglo.splice(m, Number.MAX_VALUE), buscado); } else if (arreglo[m] > buscado && arreglo.length > 1) { return binarySearch(arreglo.splice(0, m), buscado); } else { return false;// no se encuentra } } 注意:您需要对数组数据进行排序 Chofoteddy 2020-02-19T15:53:13+08:002020-02-19T15:53:13+08:00 我知道您可能想验证输入的 CP 是否存在并且不是错误的或发明的,在某些情况下我想实现它并且通过下载SEPOMEX DB 对我有用,坏事是他们经常更新它并删除或者加新CP,推荐的东西就是一句正则语: ^\d{4,5}$ 并且使用该方法.test()将类似于以下内容: var cp = 56530; /^\d{4,5}/.test(cp); // true 我创建了一个更完整的函数来验证 CP,并且迄今为止对我来说非常有效,如下所示: function validCpMx (a) { return a.length > 4 && /^\d{5}$/.test(a) && 12345 != a && !/0{5}/.test(a) && !/1{5}/.test(a) && !/2{5}/.test(a) && !/3{5}/.test(a) && !/4{5}/.test(a) && !/5{5}/.test(a) && !/6{5}/.test(a) && !/7{5}/.test(a) && !/8{5}/.test(a) && !/9{5}/.test(a); }
如果您只想验证输入的文本是否符合邮政编码的格式,则只需创建一个正则表达式。
但是,如果您想知道您的邮政编码表达式是否接受该格式字符串,您将不得不从某个地方使用数据,搜索一下我发现了以下 api(墨西哥邮政编码)
https://github.com/Munett/API-Postal-Codes
您只需要通过 ajax 请求请求并查看该文本是否有关联的位置,其余的将取决于您的应用程序的逻辑,根据您想要做什么
您可以使用此表达式
^\d{4,5}$
来指示它仅在与 4 位或 5 位数字进行比较时才有效。(墨西哥案例)由于邮政编码在某些情况下通常在开头不写 0,例如
4522 = 04522
.但是,了解邮政编码是否真的存在的唯一方法是拥有一个数据库或文件,其中包含您需要的国家/地区的邮政编码,并将它们与它进行比较。
如果你想要一个纯 JavaScript 解决方案,你可以在 json 中使用一个数组:
你只需要一个周期就能找到它
现在有一个问题,由于这个搜索很复杂
O(n)
,如果用户搜索 cp 99999,他将不得不遍历整个列表,许多记录,所以我们可以选择二分搜索我知道您可能想验证输入的 CP 是否存在并且不是错误的或发明的,在某些情况下我想实现它并且通过下载SEPOMEX DB 对我有用,坏事是他们经常更新它并删除或者加新CP,推荐的东西就是一句正则语:
并且使用该方法
.test()
将类似于以下内容:我创建了一个更完整的函数来验证 CP,并且迄今为止对我来说非常有效,如下所示: