用于检查文本框中输入的文本是否包含数字、逗号和连字符的正则表达式

本文关键字:文本 正则表达式 连字符 数字 是否 检查 输入 用于 包含 | 更新日期: 2023-09-27 18:09:00

我创建了一个windows窗体,它有2列的文本框-行范围和行总数。我想在行范围文本框中检查,以确保输入的数据仅由正确格式的数字,逗号和连字符组成-也就是说,它可以是这样的:10-20,30-40,50,60,70。但除此之外的任何事情都不应该被允许。

基本上我想自动填写"行的总数"文本框中可用的数据"行的范围"文本框。所以在上面的例子中,计数将是-(20减10)+(40减30)+ 1(50行)+ 1(60行)+ 1(70行)= 23。

我试过这样做:

string reg = @"^([0-9]+([,][0-9]+))* |([0-9]+([.'u2013-][0-9]+))$";

但是这验证了像10-20-30这样的情况也是正确的。这是不符合我的期望。

你能帮我一下吗?提前感谢。

用于检查文本框中输入的文本是否包含数字、逗号和连字符的正则表达式

每个组件的可能格式为:

'd+-'d+
'd+

我们可以将它们组合起来,因为它们具有相同的结构:

'd+(-'d+)?

用分隔符分隔的数X的常用正则表达式模式为

X(,X)*

因此,我们可以构建最终的正则表达式,它至少包含这些组件中的一个,用逗号分隔:

^'d+(-'d+)?(,'d+(-'d+)?)*$
PowerShell快速测试:
PS> '50,60','10-20','1,2-5,7','10-20,30-40,50,60,70','10-20-30' -match '^'d+(-'d+)?(,'d+(-'d+)?)*$'
50,60
10-20
1,2-5,7
10-20,30-40,50,60,70