【问题标题】:regex c# cSharp - checking string only Alphabet and one space " " and one "-"正则表达式 c# cSharp - 仅检查字符串 字母和一个空格“”和一个“-”
【发布时间】:2021-10-11 15:38:45
【问题描述】:

对不起我的英语^^

我正在尝试控制用户的输入。验证必须只接受一个“”空格、一个“-”和一个字母。

例如“-”:Jean-MArc 是接受 Jean--Marc不接受

例如 " " : el meyda 接受

用户可以删除更正

我是c#的初学者

我的代码:

static void Main(string[] args) {

        Console.WriteLine("enter your Name");
        string enterUser = Console.ReadLine();

        string pattern = "^\w*[- ]?\w*$";
        Regex rgx = new Regex(pattern);

        if (!Regex.IsMatch(enterUser, pattern)) Console.WriteLine("no match");
        
        else Console.WriteLine(" match");

【问题讨论】:

  • 你能给我们一个你想要匹配的确切字符串的例子吗,例如" -",以及您尝试过的示例?您找到的 javascript 也可能会有所帮助。
  • 可能是^([^ ]* [^ ]*|[^-]*-[^-]*)$
  • @AlexeyLarionov 匹配 . - . :-)
  • @MathiasR.Jessen 同意

标签: c#


【解决方案1】:

在我看来你需要

^\w*[- ]?\w*$

"a"    - match
"ab"   - match
" ab"  - match
"ab "  - match
"a b"  - match
"a-b"  - match
"a b " - no match
"a-b " - no match
"a- b" - no match

【讨论】:

    【解决方案2】:

    我假设,当您说“仅字母”时,您的意思是没有数字或特殊字符,并且您希望支持非 ascii 字母。

    (使用\w 表示包含数字)

    C# Regex 有一个用于定义为“字母”的所有 unicode 字符的类:\p{L}

    所以你可以试试这个:

    @"^\p{L}*[- ]?\p{L}*$"
    

    它将只匹配最多一个连字符 (-) 或空格的字母。

    【讨论】:

    • 我爱你!!!谢谢我的朋友们
    • 为了更好地理解添加两个空格而不是一个空格的逻辑?
    • 问号(?)表示:方括号中的零个或一个字符。
    猜你喜欢
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多