用于2-30个字符加上由单个连字符分隔的任何字母数字字符的正则表达式



我试图想出一个域名的正则表达式,可以是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}

最新更新