Regex.IsMatch无效

Lin*_*nus -5 c# regex

如果值与某个条件匹配,则检查该值.值如下所示:

123456:123abc89是:0099 @ ABC123

这是我的C#程序分析值的方式:

if (Regex.IsMatch(input, "[0-9]:[a-zA-Z0-9]:[a-zA-Z0-9]@[a-zA-Z0-9]") == true)
{
    Console.WriteLine("Correct.");
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它不起作用.你有什么想法?请记住,我是C#的新手.

Gil*_*een 5

一般建议 - 调试你的正则表达式.一个方便的在线网站测试你的正则表达式是:https://regex101.com

+在每个字符组后添加:

[0-9]+:[a-zA-Z0-9]+:[a-zA-Z0-9]+@[a-zA-Z0-9]+
Run Code Online (Sandbox Code Playgroud)

写入时,[0-9]它与列表中的单个字符匹配.该+量词匹配一个和无限的时间之间,多次,尽可能需要回馈.

此外,Wiktor建议添加^$在最后:

^[0-9]+:[a-zA-Z0-9]+:[a-zA-Z0-9]+@[a-zA-Z0-9]+$
Run Code Online (Sandbox Code Playgroud)
  • ^ 断言字符串开头的位置
  • $ 断言字符串末尾的位置,或者在字符串末尾的行终止符之前(如果有的话)

作为旁注,无需== true在if语句中添加:

if (Regex.IsMatch(input, "[0-9]+:[a-zA-Z0-9]+:[a-zA-Z0-9]+@[a-zA-Z0-9]+"))
Run Code Online (Sandbox Code Playgroud)