C#字符串格式验证

时间:2018-11-07 14:34:52

标签: c# validation format

更新:可接受的格式为ADD ||。 。 我需要检查服务器获取的请求是否采用这种格式,并且数字是否在<>之间。 之后,我必须读取数字并将其相加并将结果写回。因此,如果格式不适合例如ADD | <5> | <8> 我必须拒绝它并做出特定的错误消息(它不是数字,格式错误,等等)。我检查了ADD |部分,我将它们放在一个数组中,可以检查数字是否不是数字。但是我无法检查数字是否在<>中,因为数字可以包含多个数字,并且ADD | <7> | <13>的项数与ADD | <2358> | <78961156>之类的数字不同。如何检查数字是否在<>之间?

请为我提供以下帮助:我需要制作一个服务器-客户端控制台应用程序,并且我想验证来自客户端的请求。可接受的格式为XXX|<number>|<number>。 我可以像这样分割邮件:

string[] messageProcess = message.Split('|');

,我可以检查它是否是数字:

if (!(double.TryParse(messageProcess[1], out double number1)) || !(double.TryParse(messageProcess[2], out double number2)))

但是如何检查<number>部分? 谢谢您的建议。

1 个答案:

答案 0 :(得分:1)

您可以为此使用正则表达式。

如果我对您的理解正确,则后续输入应通过验证:

xxx|1232|32133
xxx|5345|23423
XXX|1323|45645

及以下内容不应:

YYY|1231|34423
XXX|ds12|sda43

如果我的假设正确,那么此Regex应该可以解决问题:

XXX\|\d+\|\d+

它是做什么的?

  • 首先,它会寻找三个X ...(如果使用大写字母或小写字母XXXX替换(?:XXX|xxx)或使用“不区分大小写的正则表达式标志”- demo
  • 由管道(|)分隔...
  • 然后查找多个数字...
  • 由管道(|)分隔...
  • 最后以另一组一个或多个数字结尾

您可以在此处查看演示:Regex101 Demo

由于您使用的是C#,因此Regex.IsMatch()可能最适合您。如果您不熟悉正则表达式以及如何在C#中使用它们,可以阅读here