Как правильно валидировать такой хэш-тег?

Есть такая функция для валидации поля с хэш-тегами - https://codepen.io/viktoraz/pen/KKmqLKK?editors=1010

Хэш-теги должны разделяться пробелом и каждый должен соответствовать шаблону.
1 проблема в том, что регулярка не проверяет каждый хэш-тег, то есть она позволяет ввести первый хэш-тег без решетки, если последний будет с решеткой.
2 проблема заключается в очистке поля. Если ввести любые символы, а потом очистить поле, поле все равно будет не валидным, хотя он пустое (проверял)

Я предполагаю, что проблема просто в регулярке, но перепробовал много разных, ничего не подходит. Может есть другой способ валидировать хэш-теги?
  • Вопрос задан
  • 637 просмотров
Решения вопроса 1
gdt
@gdt
Программист
Как вариант, вы могли бы сделать чуть более мощную регулярку, допускающую 1 или более валидных хэштегов, разделённых пробелами. Очень грубо - добавить в конец вашей регулярки (перед концом строки) \s* и завернуть всё это дело в ()+.
Например, regex: (#(?<tag>[A-Za-zА-Яа-я]{1,19})\s*)+ (https://regex101.com/r/rfH4AA/1)
Затем достаём все значения группы tag, я в js не силён но думаю должен быть способ.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alekcena
Нелинейный наставник
Не понимаю в чём проблема типо
if("ПОЛЕ ПУСТОЕ"){
//Не проверяете регуляркой
//Отправляете на сервак
}

Далее вы сказали:

Хэш-теги должны разделяться пробелом

Получаем все хештеги из строки пользователя
let input = "#adsasddasd #adsasdasda #gadsqw-asdas"

let arrHashTag = input.split(" ");

Думаю дальше проверить каждый отдельный элемент на
соответствие шаблону

Не составит труда
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы