C# 如何使用正则表达式和C验证我的文本是否包含单词
我想验证我的文本是否包含以3个字符[a-zA-Z]CRM开头的字符串,以及在这3个字符之后是否包含9个数字[0-9]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}[
与此类似,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();
}
}