基本用户输入验证//需要指南

时间:2019-10-01 11:16:04

标签: c# regex

上次我问过一些人,我该怎么做才能验证程序中的用户输入。我很高兴有足够的人在这个领域有新手的时间。作为他们的建议,我被介绍给正则表达式。循环是我的首选,但在某些情况下似乎不起作用。我仍然很难理解正则表达式的工作原理并在线观看教程,通过网络跟踪解决方案对我来说也变得更加复杂。我承认我很糟糕。我快要开始学习C#了,所以我希望在使用正则表达式方面有更多的初学者方法,因为我只是想知道如何利用它来验证用户输入。顺便说一句。

所以这是我今天下午经过的代码,因为我正在竭尽全力在用户输入错误值时如何捕获用户。也是为了防止我的程序崩溃。

有人可以指导如何使用正则表达式正确过滤用户输入吗?网络上的解决方案是非特定的。我想过滤输入的姓名(全名)以及有效年龄(我可能会尝试询问出生日期并得出年龄值)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

namespace test_console
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.Write("pls input ur name: ");
            string nametxt = Console.ReadLine();
            string namePattern = @"[A-z]$";
            if (!Regex.IsMatch(nametxt, namePattern))
            {
                Console.WriteLine("invalid name!");
                nametxt = Console.ReadLine();
            }

            while (string.IsNullOrEmpty(nametxt))
            {
                Console.WriteLine("pls input a name!");
                nametxt = Console.ReadLine();
            }

            Console.Write("now input ur age: ");
            int age;
            while (!int.TryParse(Console.ReadLine(), out age))
            { Console.WriteLine("invalid age!"); }

            Console.WriteLine("hi {0}, you are {1} ", nametxt, age);


            Console.ReadKey();
        }

    }
}

2 个答案:

答案 0 :(得分:0)

如果您询问正则表达式,请使用模式进行名称验证

 string namePattern = @"[A-z]$";

如果几乎​​肯定是错误的。现在,您正在寻找一个结束$锚点)

的字符串。
 [A-z] - exactly one character in A..z range

如果您向 Ascii表查询A..z范围,则会发现它具有

 A,..., Z, [, \, ], ^, _, `, a, ... z

个字符(请注意,不需要的 []\),这就是123[是有效名称(结束的原因) [都在有效范围内。您可能想要这样的模式:

 string namePattern = @"^[A-Za-z]+$";

模式:

 ^          - string start
 [A-Za-z]+  - one or many characters, each in A..Z or a..z range
 $          - string end 

因此,整个字符串必须至少包含一个字符,并且所有字符必须在A-Za-z范围内

答案 1 :(得分:0)

基于您的Regex表达式上方提供的代码,Text是错误的,例如,如果有人在名称中添加空格,它将检测为不是名称。

第二步,如果您想为名称添加正则表达式,则还要为年龄添加。

最后一个问题不是很清楚,也请您向我们详细介绍您要寻找的内容。