Regex неправильно проверяет почтовые индексы - PullRequest
1 голос
/ 09 июля 2020

Я пытался проверить почтовые индексы США и Канады, поскольку отправляю их через api. Однако я не могу заставить регулярное выражение работать. Моя проверка немного запутана, но, тем не менее, она должна работать. Я считаю, что регулярное выражение правильное. У меня просто неправильный лог c? Буду признателен за любую помощь. Спасибо.

function checkoutv2() {
  var typepostal;
  if (xcountry == 1) {
    //canada
    typepostal = "Canada";
  } else if (xcountry == 2) {
    //usa
    var typepostal = "USA";
  }

  console.log(xcountry);
  var xfirstname = document.getElementById("firstname").value;
  var xlastname = document.getElementById("lastname").value;
  var xemail = document.getElementById("email").value;
  var xcity = document.getElementById("city").value;
  var xaddress = document.getElementById("address").value;
  var xpostal = document.getElementById("postal").value;

  xpostal = xpostal.toString().trim();
  var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  var ca = new RegExp(/([ABCEGHJKLMNPRSTVXY]\d)([ABCEGHJKLMNPRSTVWXYZ]\d){2}/i);
  var us = new RegExp("^\\d{5}(-{0,1}\\d{4})?$");
  if (xfirstname == "" || xfirstname.length > 50) {
    document.getElementById("firstname").style.border = "1px solid red";
  } else if (xlastname == "" || xlastname.length > 50) {
    document.getElementById("lastname").style.border = "1px solid red";
  } else if (reg.test(xemail) == false || xemail.lenth > 100) {
    document.getElementById("email").style.border = "1px solid red";
  } else if (xcity == "" || xcity.length > 100) {
    document.getElementById("city").style.border = "1px solid red";
  } else if (xaddress == "" || xaddress.length > 100) {
    document.getElementById("address").style.border = "1px solid red";
  } else if (
    typepostal == "Canada" &&
    ca.test(xpostal.toString().replace(/\W+/g, "")) == false &&
    xpostal.length >= 10
  ) {
    console.log("postal is cad");
    console.log(xpostal);
    document.getElementById("postal").style.border = "1px solid red";
  } else if (
    typepostal == "USA" &&
    xpostal.length > 10 &&
    us.test(xpostal.toString()) == false
  ) {
    console.log("postal is us");
    document.getElementById("postal").style.border = "1px solid red";
  } else {
    checkout();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...