Regex соответствует слипу?

У меня возникли проблемы с созданием регулярного выражения для сопоставления URL-адресов (в основном, буквенно-цифровых слов, разделенных одиночными штрихами)

this-is-an-example

Я придумал это Regex: /[a-z0-9\-]+$/ и, хотя он ограничивает строку только буквенно-цифровыми символами и тире, он все равно создает некоторые ложные срабатывания, подобные этим:

-example
example-
this-----is---an--example
-

Мне очень плохо с регулярными выражениями, поэтому любая помощь будет оценена.

Ответ 1

Вы можете использовать это:

/^
  [a-z0-9]+   # One or more repetition of given characters
  (?:         # A non-capture group.
    -           # A hyphen
    [a-z0-9]+   # One or more repetition of given characters
  )*          # Zero or more repetition of previous group
 $/ 

Это будет соответствовать:

  • Последовательность буквенно-цифровых символов в начале.
  • Затем он будет соответствовать дефису, затем последовательности буквенно-цифровых символов, 0 или более раз.