Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用正则表达式和C验证我的文本是否包含单词_C#_Regex - Fatal编程技术网

C# 如何使用正则表达式和C验证我的文本是否包含单词

C# 如何使用正则表达式和C验证我的文本是否包含单词,c#,regex,C#,Regex,我想验证我的文本是否包含以3个字符[a-zA-Z]CRM开头的字符串,以及在这3个字符之后是否包含9个数字[0-9] 与此类似,CRM123456789使用锚点进行精确的字符串匹配。^断言我们是起点,$断言我们是终点 ^[a-zA-Z]{3}[0-9]{9}$ {num}重复量词,根据大括号内的数字重复前面的标记。所以在这个[0-9]{9}模式中,{9}会将前面的标记[0-9]重复整整9次 简单: bool valid = Regex.IsMatch(input,@"^[a-zA-Z]{3}[

我想验证我的文本是否包含以3个字符[a-zA-Z]CRM开头的字符串,以及在这3个字符之后是否包含9个数字[0-9]
与此类似,CRM123456789使用锚点进行精确的字符串匹配。^断言我们是起点,$断言我们是终点

^[a-zA-Z]{3}[0-9]{9}$
{num}重复量词,根据大括号内的数字重复前面的标记。所以在这个[0-9]{9}模式中,{9}会将前面的标记[0-9]重复整整9次

简单:

bool valid = Regex.IsMatch(input,@"^[a-zA-Z]{3}[0-9]{9}$");

该任务不需要正则表达式:

bool valid = input.Length == 12 
          && input.StartsWith("CRM") 
          && input.Substring(3).All(Char.IsDigit);
如果CRM只是一个示例,并且允许所有字母作为前三个字符:

bool valid = input.Length == 12 
          && input.Remove(3).All(Char.IsLetter) 
          && input.Substring(3).All(Char.IsDigit);

如果您的CRM123456789出现在较长的文本中,则需要检查适用于您的边界。在我的例子中,标点符号或空格旁边经常有单词。我会使用:


?您可以使用linq:

if(input.Length == 12) // check characters are 12
{
 if(input.Take(3).All(x=> Char.IsLetter(x)) // First 3 are alphabets
 && input.Skip(3).All(x=>Char.IsDigit(x))) // next all numbers
   return true;
 else
  return false;

}
else
{
  return false;
}

说到正则表达式,你真是太快了!呵呵,我就是这么想的=@abdelazizmaroc接受这里对你最有帮助的任何答案。不检查它是否从CRM开始。@TimSchmelter他举了CRM为例。@TimSchmelter@^CRM[0-9]{9}在本例中,$,但他/她发布了正则表达式的所有就绪部分,因此我认为我坚持认为,任何额外的解释或指出最重要的部分都会使您的答案更好。只有代码的答案有时很难理解。@abdelazizmaroc:不客气。下次请提供更多匹配项出现的上下文。这将减少额外答案的数量:也许是我的答案。
using System;
using System.Text.RegularExpressions;

class TestRegularExpressionValidation
{
    static void Main()
    {
        string[] listofinputs = 
        {
            "CRM32323324", 
            "232dsf12414", 
            "adfn adfm srf333333333 sdj",
            "srf333333333",
            "saca dfd444444444r.",
            "CRM876969697", 
        };

        string sPattern = "^\\w{3}\\d{9}$";

        foreach (string s in listofinputs)
        {
            System.Console.Write("{0,14}", s);

            if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern))
            {
                System.Console.WriteLine(" - valid");
            }
            else
            {
                System.Console.WriteLine(" - invalid");
            }
        }

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}