Вы можете использовать:
^[A-Za-z0-9-]*$
Это соответствует строкам, возможно, пустым, которые полностью состоят из прописных / строчных букв (ASCII AZ), цифр (ASCII 0-9) и тире.
Это соответствует ( как видно на rubular.com ):
this-is-quite-alright
and-a-1-and-a-2-and-3-4-5
yep---------this-is-also-okay
И отклоняет:
this -is/not,soålright
hello world
Объяснение:
^
и $
- соответственно начало и конец якоря строки - Если вы ищете совпадения в строке, то якоря вам не нужны
[...]
- это класс символов a-z
, A-Z
, 0-9
в классе символов определяют диапазоны -
как последний символ вкласс - буквальная черта
*
- повторение ноль или более
регулярные выражения.info
Изменение
Спецификация не ясна,но если -
используется только для разделенияrds ", то есть без двойного тире, без концевого тире, без предшествующего тире, тогда шаблон более сложный (только слегка!)
_"alpha"_ separating dash
/ \ /
^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$
\__________/| \__________/|\
"word" | "word" | zero-or-more
\_____________/
group together
Это соответствует строкам, состоящим хотя бы из одного" слова ", где словасостоит из одного или нескольких «альфа», где «альфа» состоит из букв и цифр.Далее могут следовать «слова», и они всегда разделяются тире.
Это соответствует (, как видно на rubular.com ):
this-is-quite-alright
and-a-1-and-a-2-and-3-4-5
Иотклоняет:
--no-way
no-way--
no--way