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

时间:2017-08-08 14:31:40

标签: javascript regex validation

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

    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位数) “纽约”,“波士顿”,“芝加哥”,xx,xxxx等城市(1至50个字符)

无效案例: 1234 123 12 1 空字符串 Boston33 333Chicago

1 个答案:

答案 0 :(得分:1)

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

示例代码段:

&#13;
&#13;
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));
});
&#13;
&#13;
&#13;