用于验证邮政编码或城市的 JavaScript 正则表达式

Posted

技术标签:

【中文标题】用于验证邮政编码或城市的 JavaScript 正则表达式【英文标题】:JavaScript regex to validate postal code or City 【发布时间】:2017-08-08 14:31:40 【问题描述】:

我想对名为“城市或邮政编码”的输入字段进行客户端验证,我对用户输入有单独的验证。我首先区分输入是数字还是字符串,然后有单独的块来验证它们。我想知道是否有一种优雅的方式,或者换句话说,一个正则表达式来验证输入

    validateCityOrPostalCode(value) 
    const isnum = /^\d+$/.test(value);
    if (isnum) 
      const patternForZipCode = RegExp('^[0-9]5$');
      const result = patternForZipCode.test(value);
      return result;
    
    const onlyLetters = RegExp('^[a-zA-Z ]$').test(value);
    if (onlyLetters) 
      const patternForCity = RegExp('^([a-zA-Z -]1,50)$');
      const validCityName = patternForCity.test(value);
      return validCityName;
    
  

我打算做什么

validateCityOrPostalCode(value) 
const patternForCityOrPostalCode = '<The regex that I am looking for >'
const result = patternForCityOrPostalCode.test(value);
return result;

有效案例: 5 位邮政编码,如 10016、12345、44444 等(5 位数字) 'New York'、'Boston'、'Chicago'、xx、xxxx 等城市(1 到 50 个字符)

无效案例: 1234 123 12 1 空字符串 波士顿33 333芝加哥

【问题讨论】:

【参考方案1】:

您可以在正则表达式中使用管道,其作用类似于 OR。

示例 sn-p:

function validateCityOrPostalCode(value) 
  return /^([0-9]5|[a-zA-Z][a-zA-Z ]0,49)$/.test(value);


var values = ['12345','New York','1234','','     ','Boston33','333Chicago'];

values.forEach(
  function(value) 
     console.log(value +":"+ validateCityOrPostalCode(value));
);

【讨论】:

以上是关于用于验证邮政编码或城市的 JavaScript 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

仅正整数输入的 Javascript 验证

如何使用 JavaScript 和 AJAX 根据邮政编码自动填充城市和州?

JavaScript Appcelerator:简单的邮政编码城市搜索器

如何在文本框中验证邮政编码并将相应的州/城市输出与其各自的标签相对应

邮政编码数据库/地址验证

javascript 只从Google Maps API反向地理编码器获取城市和州