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

C#正则表达式修改需求:首尾为字母数字,中间最多1个连字符

正则表达式修改方案

针对你的需求,修改后的正则表达式如下:

^(?:[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)?|)$

规则拆解

  • ^ 和 $ 锁定字符串首尾,确保整串完全匹配规则
  • 整体分为两个可选分支:
    1. 非空字符串分支:[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)?
      • [a-zA-Z0-9]+:匹配至少1个字母数字,保证字符串开头是字母数字
      • (?:-[a-zA-Z0-9]+)?:可选子分支,匹配1个连字符+至少1个字母数字,确保最多只有1个连字符且连字符前后都是字母数字
    2. 空字符串分支:|),直接匹配空串,满足有效值中的空字符串需求

示例验证

有效值匹配情况

  • A / 1A / 12:匹配非空分支的 [a-zA-Z0-9]+ 部分
  • A-B:匹配完整的非空分支
  • "":匹配空字符串分支

无效值不匹配原因

  • -A:开头为连字符,不符合非空分支的开头要求
  • B2-:结尾为连字符,非空分支要求连字符后必须跟字母数字
  • A--B:包含两个连字符,超出最多1个的限制
  • #12:开头为非字母数字字符,不符合开头要求

C# 中使用示例

using System.Text.RegularExpressions;

bool IsValid(string input)
{
    return Regex.IsMatch(input, @"^(?:[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)?|)$");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:15:00