Regex для номера телефона в форме валидации
в шаблоне django с тегом html pattern и boostrap для валидации формы
с помощью этого регекса проверяется последовательность чисел, которые могут быть разделены тире
"^[+-]?\d(?:-?\d)+$"
пример:
12-65-25-75-84 or 12-255-0214
javascript :
(() => {
'use strict'
const forms = document.querySelectorAll('.needs-validation')
Array.from(forms).forEach(form => {
form.addEventListener('submit', event => {
if (!form.checkValidity()) {
event.preventDefault()
event.stopPropagation()
}
form.classList.add('was-validated')
}, false)
})
})()
и html
<input type="text" class="form-control" id="exampleFormControlInput1" name="tel" id="tel" placeholder="Tel" pattern="^[+-]?\d(?:-?\d)+$" required>
</div>
Я хотел бы знать, как изменить его, чтобы иметь возможность ставить пробелы между числами (в дополнение к тире)
пример:
12 57 125-98-457
и ограничить общее количество цифр до 15 (без учета пробелов и тире)
например, строка следующего вида:
12-28-35-74-12
или
12 28 35 74 12
or 123-478 25 12 124-15
спасибо
Я бы использовал:
^[0-9](?:[ -]?[0-9]){0,14}$
^
- Сопоставляет начало строки.[0-9]
- Совпадает с одной цифрой (0, 1, ... 9).(?:
- Начало не захватывающей группы.[ -]?
- Опционально соответствует либо пробелу, либо '-'.[0-9]
- Соответствует одной цифре (0, 1, ... 9).)
- Конец не захватывающей группы.{0,14}
- Зачищает предыдущий токен, т.е. предыдущую группу не захвата, от 0 до 14 раз.$
- Выравнивает конец строки.