Javascript 用于通配符域验证的正则表达式

Javascript 用于通配符域验证的正则表达式,javascript,regex,Javascript,Regex,我对编写正则表达式还不熟悉。我计划编写正则表达式来验证通配符域匹配。下面是一些场景 正确: *.test.com test.com abc.test.com 不正确: *test.com test.com* test.*.com test.abc*.com 这是我的正则表达式 /^(([a-zA-Z0-9]|\*\.[a-zA-Z0-9])([a-zA-Z0-9\-_]{0,243}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/ 它正在按预期工作。我们能改进或写出更好

我对编写正则表达式还不熟悉。我计划编写正则表达式来验证通配符域匹配。下面是一些场景

正确:

  • *.test.com
  • test.com
  • abc.test.com
不正确:

  • *test.com
  • test.com*
  • test.*.com
  • test.abc*.com
这是我的正则表达式

/^(([a-zA-Z0-9]|\*\.[a-zA-Z0-9])([a-zA-Z0-9\-_]{0,243}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/
它正在按预期工作。我们能改进或写出更好的表达方式吗

^(\*\.)?([\w-]+\.)+[\w-]+$
符合你的例子。

从我的观点来看,我也认为第三个反面例子是正确的

^(([\w-]+\.)|(\*\.))+[\w-]+$

编辑:

您可能必须调整字符类以包含所有允许的字符。我想让正则表达式易于阅读

为了改进您的正则表达式,请告诉我们规则谢谢您的回复。它适用于上述所有场景。我忘了在我的问题中提到-1.它的最大长度应该是250。2.它不应该允许下划线(41; 3。它应该允许连字符(-)
\d
已经包含在
\w
中,因此
[\w\d]+
\w+
@M42相同。好的,然后我回忆起错误的事情。我改编了它,thanx@JavaP添加了连字符