正则表达式匹配' - '分隔的字母数字单词

pra*_*ian 3 javascript regex

我想测试用户是否只键入字母数字值或一个" - ".

hello-world                 -> Match
hello-first-world           -> match
this-is-my-super-world      -> match
hello--world                -> NO MATCH
hello-world-------this-is   -> NO MATCH
-hello-world                -> NO MATCH (leading dash)
hello-world-                -> NO MATCH (trailing dash)
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的,但我不知道如何实施" - "标志来测试它,如果它只是一次而不重复.

var regExp = /^[A-Za-z0-9-]+$/;
Run Code Online (Sandbox Code Playgroud)

Gum*_*mbo 15

试试这个:

/^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$/
Run Code Online (Sandbox Code Playgroud)

这将仅匹配由单个分隔的一个或多个字母数字字符序列的序列-.如果您不想允许单个单词(例如,仅hello),请将*乘数替换为+仅允许最后一个组的一次或多次重复.


Bra*_*rad 5

你去(这是有效的).

var regExp = /^[A-Za-z0-9]+([-]{1}[A-Za-z0-9]+)+$/;
Run Code Online (Sandbox Code Playgroud)

字母和数字贪婪,单个破折号,重复此组合,以字母和数字结尾.