Проверка британского почтового индекса с помощью JavaScript Reg для приложения Angular5 - PullRequest
0 голосов
/ 21 мая 2018

Я работаю над проверкой реактивной формы Angular 5 и пытаюсь проверить британский почтовый индекс, используя настраиваемую функцию проверки, которая работает и тестирует отдельно, в случае, если в конце второй части почтового индекса указывается дополнительное буквенное или числовое значение, например, проверяется значение trueNW10 5NW правильно, но если я наберу что-то вроде NW10, 5NWRRRRRRRRRRRRRRRR также вернет true, что неверно.

Я попытался после регулярного эксперимента на https://regexr.com/ и он вернул правильный ответ, не уверен, почему в javaScript не ведет себя так же ???

function postCodeValidator(control: FormControl)
 {
   let givenPostCode = control.value;

   let UKPostCodePattern = /^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))\s?[0-9][A-Za-z]{2})/;

   var isUKPostCodeValid = UKPostCodePattern.test(givenPostCode); 

   console.log("postcode validity ",isUKPostCodeValid,  " for ", givenPostCode);

  if(!isUKPostCodeValid)
  {
    return {
        postCode:{
          required:"UK Valid PostCode",
          provided: givenPostCode
        }
    }
  }
  return null;
}

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте использовать следующее регулярное выражение

^(([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))\s?[0-9][A-Za-z]{2}))$

https://regexr.com/3pp3r

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...