У меня есть поле телефона, где допустимы два формата — «123-456-7890» и «+01 123-456-7890». У меня есть шаблон для обработки второго случая Validators.pattern(/(\+\d{2})?\d{3}[\-]?\d{3}[\-]?\d{4}/), но как сделать так, чтобы первый случай тоже был приемлемым? Насколько я могу судить из документации, валидаторы поддерживают только && условия, но не || условия. Я что-то упускаю?
Кроме того, я хотел бы, чтобы поле стало красным, когда в него вводятся данные, если они еще не соответствуют критериям проверки, и не раздражать пользователя всплывающими окнами по пути. Затем, когда он покидает поле, оно остается красным. Только тогда, когда форма отправлена, она перечисляет все поля, которые неверны. Есть ли способ сделать это?






Обновление регулярного выражения до /^(\+?\d{2}\s)?\d{3}[\-]?\d{3}[\-]?\d{4}$/ будет работать, и если вы хотите, чтобы пробел был необязательным после кода страны, используйте это /^(\+?\d{2}\s?)?\d{3}[\-]?\d{3}[\-]?\d{4}$/.
Действительно, сработало! Благодарю вас! Я получаю 2,3,3,4 цифры. Я не понимаю, как он может обрабатывать оба шаблона одновременно. Вы можете объяснить?
Я получаю цифры 2,3,3,4 и вижу, как он может обрабатывать оба шаблона одновременно. Для чего нужны ^ в начале и $ в конце? Кроме того, необязательное пространство, похоже, не работает во втором формате. Это не удается, если пробел включен.
^ значит надо начинать с. $ означает, что должно заканчиваться на. ? означает ноль или единицу. \s означает пробел. Добавление ? к \s, то есть \s?, означает, что разрешено ноль или один пробел. \d означает любую цифру. {x, y} означает минимум x символов и максимум y символов, вы можете указать любой из них. Например, {,4} означает максимум 4 символа. {4} означает, что должно быть 4 символа, а {4,} означает не менее 4 символов. Надеюсь, это может быть полезно для вас.
Используйте пользовательский ValidatorFn. Взгляните на пример
Forbidden Hero Nameв угловые документы.