我试图想出一个域名的正则表达式,可以是2-30个字符长,由单个连字符分隔的字母数字字符,不允许其他特殊字符。像这样的thisi67satest-mydomain
我目前拥有的是:/^[a-z0-9-]{2,30}$/
,但这并没有涵盖所有场景,特别是关于单个连字符。我一直试着用谷歌搜索这些正则表达式。上面的例子将允许多个连字符,这是我不想要的。如何强制使用连字符?
试试这个:
^(?=.{2,30}$)[a-z0-9]+-[a-z0-9]+$
^
起始行/字符串。(?=.{2,30}$)
确保2-30个字符之间的字符串。[a-z0-9]+
一个或多个小写字母或数字-
一个文字-
.[a-z0-9]+
一个或多个小写字母或数字$
line - end of the string.
参见regex demo
我想下面的模式对你会有用。让我知道它是否有效。
(w|-(?!-)){2,30}