6

我正在尝试修改此正则表达式,以便您获得大于或等于 1 或小于或等于 10 的数字。此正则表达式允许 >= 0 或 <= 10。

我在表单上有一个文本字段,它的数字等于或大于 0 且小于 11。我可以使用 IF 和逻辑运算符 TryParse,但我有点喜欢正则表达式。

@"^\d$|^[1][0]$"
4

7 回答 7

11

您只需要稍微修改一下您的正则表达式

@"^[1-9]$|^10$"

您不需要单个字符周围的方括号,我会在交替周围使用一个组并将其更改为

@"^([1-9]|10)$"

在 Regexr 上查看

于 2012-11-22T08:16:45.460 回答
5

答案是这不是你应该使用正则表达式的东西。如果有的话,你会使用正则表达式来解析数字,然后将它们与标准if (num >= 0)等进行比较。

// EDIT: replaced regex with this:
int number;
if (Int32.TryParse(myString, out number)) {
    // do something, like:
    if (number >= 0 || number <= 10) {

    }
}
于 2012-11-22T08:15:44.673 回答
4

如果您使用的是 WinForms,则等于和等于 10 的NumericUpDown控件将完成这项工作。此外,您不需要解析 - 属性将包含您的值(嗯,它将是类型- 只需将其转换为)。MinValue1MaxValueValuedecimalint

使用的另一个原因NumericUpDown- 它不允许输入除数字之外的任何内容,并且上下箭头对用户说 - 此控件正在等待您的数字。

于 2012-11-22T08:27:02.183 回答
3

虽然我建议简单地使用逻辑运算符来检查 int 是否在 1 到 10 之间,但这里有一个有效的正则表达式:

^(10|[1-9])$
于 2012-11-22T08:17:26.517 回答
2

给你:

^(1|2|3|4|5|6|7|8|9|10)$

非常明确,不能误解,清晰如初。为我提供更好的正则表达式。这里不需要简短和神秘

于 2012-11-22T08:16:54.533 回答
1

你可以试试这个:

^([1-9]|10)$
于 2012-11-22T08:20:33.490 回答
0

使用正则表达式检查从 1 到 10 的数字 -

^([1-9]|10)$

于 2012-11-22T10:08:13.050 回答