C# 正则表达式与C中的字符串格式不匹配#
我正在通过串行端口接收数据,我想验证数据格式是否正确。我期望的数据格式如下 数字,数字,数字,数字->120025006500,90 我是这样使用正则表达式的C# 正则表达式与C中的字符串格式不匹配#,c#,.net,regex,C#,.net,Regex,我正在通过串行端口接收数据,我想验证数据格式是否正确。我期望的数据格式如下 数字,数字,数字,数字->120025006500,90 我是这样使用正则表达式的 Regex.IsMatch(s,@“^[0-4095]\,[0-4095]\,[0-4095]\,[0-4095]\,[0-4095]$” 使用4095,因为数字范围介于0和4095之间。我需要帮助。提前谢谢。我们不能在这样的数字范围内做。您可以将此正则表达式用于您的用例: (0-9[0-9][0-9][0-9][0-9][0-9][0-
Regex.IsMatch(s,@“^[0-4095]\,[0-4095]\,[0-4095]\,[0-4095]\,[0-4095]$”
使用4095,因为数字范围介于0和4095之间。我需要帮助。提前谢谢。我们不能在这样的数字范围内做。您可以将此正则表达式用于您的用例: (0-9[0-9][0-9][0-9][0-9][0-9][0-9][0-9[0-9[0-9][0-9][0-9][0-9][0-9][0-9[0-9][0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9][0-9[0-9][0-9][0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9][0-9[0-9][0-9][0-9[0-9[0-9][0-9[0-9[0-9[0-9[0-9]0-9]0-9]0-9]0-9][0-9[0-9[0-9[0-9[0-9][0-9][0-9][0-9][0-9][0-9][3[0-9][0-9][0-9]| 40[0-9][0-5])$ 编辑: (0-0-9[0-9[0-9{{{1,3 3 3}{0-9{{3-9}{3-9}{3}3[0-9[0-9{{{3}{3}3[0-9[0-9[0-9{{{1,3 3.3}{{0 0-9{3}3}{{3}}3[0 0-9}3[3[3[0-9[3[0-9[3[3[0-9[0-9{{{{{{{{{1,3.0-9}3}3[1,3}3[0-3}3[0-3[0-9[0-9}3[0-3[0 0-9[0-9{{0-9{{{{{{0-9}3[1,3}> 或者
我想你现在明白了。要检查数字是否介于0-4095之间
- 数字可以是个位数0-9
- 可以是两位数[0-9][0-9]
- 它可以是任何三位数[0-9][0-9][0-9]
- 但是,对于一个4位数的数字,我们必须忽略所有
大于4095
这就是为什么查询需要比平时更长的原因
- 1[0-9][0-9][0-9]涵盖从1开始的所有4位数字
- 40[0-9][0-5]涵盖4000到4095之间的所有数字
也许
^(?:40\d[0-5]|[1-3]\d{3}|\d{1,3}),(?:40\d[0-5]|[1-3]\d{3}|\d{1,3}),(?:40\d[0-5]|[1-3]\d{3}|\d{1,3}),(?:40\d[0-5]|[1-3]\d{3}|\d{1,3})$
如果000000000000
有效,可能工作正常,否则
^(?:(?:40\d[0-5]|[1-3]\d{3}|[1-9]\d{2}|[1-9]\d|\d),){3}(?:40\d[0-5]|[1-3]\d{3}|[1-9]\d{2}|[1-9]\d|\d)$
也可能是一种选择
试验
如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况
正则表达式电路
可视化正则表达式:
您可以使用简单的LINQ表达式和int.TryParse方法,无需依赖正则表达式:
var sections = e.Split(',');
sections.Count() == 4 &&
sections.All(s => int.TryParse(s, out int i) && i >= 0 && i <= 4095);
var sections=e.Split(',');
sections.Count()==4&&
sections.All(s=>int.TryParse(s,out int i)& & i>=0 & &将数字解析为INTS,比较与ReXEX LINGO中的数字范围比较容易的值。如果您想使模式变短,请使用逗号,但强制使用“<代码> \b>代码>。我提出这是非常有帮助的!经过两个步骤的工作之后,用正则表达式验证格式,然后PAR。通过使用整数检查它们的值,我得出结论这是最好的答案。正则表达式有其局限性。在这种情况下,我认为正则表达式不是正确的答案。同意,正则表达式很快变得难以阅读,这克服了简洁性。
var sections = e.Split(',');
sections.Count() == 4 &&
sections.All(s => int.TryParse(s, out int i) && i >= 0 && i <= 4095);