You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写匹配2-30字符且含单个必填连字符的域名正则表达式?

修正后的域名正则表达式实现

最终正则表达式

/^(?=.{2,30}$)[a-z0-9]+-[a-z0-9]+$/i

规则拆解

  • ^ 和 $:锚定字符串首尾,确保整个内容完全匹配规则,无额外字符。
  • (?=.{2,30}$):正向预检查,限制整个字符串长度在2-30字符范围内(注:因必填单个连字符,实际最短有效长度为3,2字符无法满足「含单个连字符+两边字母数字」的要求)。
  • [a-z0-9]+:匹配1个及以上字母/数字,避免连字符出现在字符串首尾。
  • -:仅匹配单个连字符,确保整个字符串中只有这一处分隔符。
  • /i:不区分大小写,若仅需匹配小写字母可移除该修饰符。

原正则的问题

你的原正则 /^[a-z0-9-]{2,30}$/ 有三个核心缺陷:

  1. 允许连续多个连字符(如 test--domain);
  2. 允许连字符出现在开头或结尾(如 -test 或 test-);
  3. 不强制要求包含连字符(纯字母数字的字符串也会被匹配)。

测试验证

  • 匹配成功:thisi67satest-mydomain
  • 匹配失败:test--domain(多连字符)、-testdomain(连字符开头)、testdomain-(连字符结尾)、testdomain(无连字符)、abcdefghijklmnopqrstuvwxyzabcdef(长度超30)

内容的提问来源于stack exchange,提问作者lacoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:01:51