Регулярное выражение для букв, цифр и -

298
13 января 2017, 10:45

Есть регулярное выражение:

let urlRegx = /^[a-z0-9]+[\-]*/;

Оно должно соответствовать строкам:

  • 'adhfjkhakldf'
  • 'adhfjkhakldf-asdfhjkhadsfkh'
  • 'dsafasdf98980'

Но когда я проверяю на пробелы возвращается true, то есть:

  • 'kladjlasjd laksjdlasj'
  • 'klsdfjlksadj asdklfjlsdajfl'
  • 'klsadjflkdjsaf '

https://jsfiddle.net/7zr1fbqw/

Answer 1

Нужно немного пересмотреть вашу регулярку:

/^[a-z0-9]+([\-][a-z0-9]+)*$/

Она основана на вашем примере и пропускает повторяющиеся блоки [a-z0-9] от 1 до N, разделенные дефисом. Важно обозначить здесь конец строки $, что вы забыли сделать.

Посмотреть работу можно здесь: https://regex101.com/r/E9GT4L/1.

Answer 2

В своем регулярном выражении вы не используете знак конца строки $ и вашему регулярному выражению удовлетворяет первая часть строки. Для проверки можете использовать например такое выражение

/^[^\W]+[\-]*[^\W]+$/
READ ALSO
chosen.jquery.js удаление тегов

chosen.jquery.js удаление тегов

Помогите, пожалуйста, удалить тег полностьюЕсть плагин https://github

521
Помогите разобраться с табами (jQuery)

Помогите разобраться с табами (jQuery)

Не выделяются tab-item на табахПомогите разобраться, что не так? Имеется:

297
Маскирование фонов CSS

Маскирование фонов CSS

Добрый день уважаемыеПодскажите как реализовать маскирование фонов в CSS ?

426
Нужно изменить div при radio:checked

Нужно изменить div при radio:checked

Нужно чтобы при действии radio:checked менялся цвет блока #a

404