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

C# 正则表达式如何实现仅允许字母、至多1个空格和1个连字符的输入校验

代码问题修正

你的原有代码存在3个问题:

  • 字符串转义错误:C#普通字符串中\是转义符,你写的\w会被识别为非法转义序列,运行会报错,要么给字符串前加@声明为逐字字符串,要么把\写成\\。
  • 正则规则不符合需求:你写的[- ]?仅允许最多出现1个「空格或连字符」,但需求是最多1个空格加最多1个连字符,两者可以同时存在,总共最多2个特殊字符。
  • \w匹配范围不符合要求:\w不仅匹配英文字母,还会匹配数字、下划线,甚至部分Unicode的文字字符,不符合「仅允许包含英文字母」的要求。

最终实现代码

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("enter your Name");
        string enterUser = Console.ReadLine().Trim(); // 可选:去除首尾空白
        // 正则规则:最多1个连字符、最多1个空格,其余字符仅允许英文字母
        string pattern = @"^(?![^-]*-[^-]*-)(?![^ ]* [^ ]* )[a-zA-Z -]+$";
        
        if (Regex.IsMatch(enterUser, pattern))
        {
            Console.WriteLine("match");
        }
        else
        {
            Console.WriteLine("no match");
        }
    }
}

正则规则说明

  • (?![^-]*-[^-]*-):负向预查,禁止字符串中出现2个及以上的连字符
  • (?![^ ]* [^ ]* ):负向预查,禁止字符串中出现2个及以上的空格
  • [a-zA-Z -]+:限定整个字符串仅能包含英文字母、空格、连字符,且不能为空

校验效果验证

输入内容校验结果
Jean-MArc匹配
Jean--Marc不匹配(多个连字符)
el meyda匹配
Jean-Luc Picard匹配(1个连字符+1个空格)
Jean Luc Picard不匹配(多个空格)
Jean123不匹配(包含数字)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:24:01