Проверка угловых 7 шаблонов, позволяющая вводить данные, которые не должны быть разрешены - PullRequest
0 голосов
/ 09 июля 2019

У нас есть Java API, который проверяет входящие сообщения с использованием XSD. Для проверки телефонных номеров используется следующий шаблон:

((085)[-]?[0-9]{7})|((088)[-]?[0-9]{7})|(((0)[1-9]{2}[0-9][-]?[1-9][0-9]{5})|((\\+31|0|0031)[1-9][0-9][-]?[1-9][0-9]{6}))|((06)[-]?[1-9]{1}[0-9]{7})|(((\\+31|0|0031)6){1}[-]?[1-9]{1}[0-9]{7})|\\+(1\d{4,14}|2[078]\\d{3,13}|3[0-469]\\d{3,13}|4[013-9]\\d{3,13}|5[1-8]\\d{3,13}|6[0-6]\\d{3,13}|7\\d{4,14}|8[1-469]\\d{3,13}|9[0-58]\\d{3,13}|[2-9]\\d{4,14})

Я создал форму с использованием этого точного шаблона, стараясь использовать двойную обратную косую черту:

this.inputForm = this.formBuilder.group({
        phonenumber: ['', Validators.pattern('((085)[-]?[0-9]{7})|((088)[-]?[0-9]{7})|(((0)[1-9]{2}[0-9][-]?[1-9][0-9]{5})|((\\+31|0|0031)[1-9][0-9][-]?[1-9][0-9]{6}))|((06)[-]?[1-9]{1}[0-9]{7})|(((\\+31|0|0031)6){1}[-]?[1-9]{1}[0-9]{7})|\\+(1\\d{4,14}|2[078]\\d{3,13}|3[0-469]\\d{3,13}|4[013-9]\\d{3,13}|5[1-8]\\d{3,13}|6[0-6]\\d{3,13}|7\\d{4,14}|8[1-469]\\d{3,13}|9[0-58]\\d{3,13}|[2-9]\\d{4,14})')],
    });

Это работает по большей части, но все еще допускает определенные числа, которые XSD отклоняет. Например, я могу ввести 061234567912345678, и валидатор разрешит это, но XSD - нет. Кто-нибудь знает, что может быть причиной этого?

1 Ответ

0 голосов
/ 09 июля 2019

061234567912345678 соответствует (06)[-]?[1-9]{1}[0-9]{7}, я думаю, вы должны использовать ^(((085)[-]?[0-9]{7})|((088)[-]?[0-9]{7})|(((0)[1-9]{2}[0-9][-]?[1-9][0-9]{5})|((\\+31|0|0031)[1-9][0-9][-]?[1-9][0-9]{6}))|((06)[-]?[1-9]{1}[0-9]{7})|(((\\+31|0|0031)6){1}[-]?[1-9]{1}[0-9]{7})|\\+(1\d{4,14}|2[078]\\d{3,13}|3[0-469]\\d{3,13}|4[013-9]\\d{3,13}|5[1-8]\\d{3,13}|6[0-6]\\d{3,13}|7\\d{4,14}|8[1-469]\\d{3,13}|9[0-58]\\d{3,13}|[2-9]\\d{4,14}))$ в качестве регулярного выражения (добавлено ^( в начале и )$ в конце), оно соответствует началу и концу строки (между вы можете по-разному)

...