1

我需要帮助形成正则表达式以将用户输入限制为仅数字且最多出现 10 次。

我有正则表达式,它只能将输入保留为数字,但我不能将其限制为最多 10 个。

这是我所拥有的:

^(0|[1-9][0-9]*)$

我可以接受负数、小数和 0。有什么建议吗?

4

4 回答 4

3
^\s*([0-9)+){0,10}\s*$

这基本上说我想要 0 到 10 件东西,每件东西都是数字。我在任一侧添加了 \s* 以允许用户在其数字之前或之后放置空格。这会接受像

10 1231231 1231 1231 23112 123123

如果你真正想要的只是一个数字,最多只有 10 位数字,那就更容易了:

^\s[0-9]{1,10}\s$
于 2012-05-18T21:02:00.547 回答
0

你可以试试这个:

^(?<=\s)(\-?[\d]{1,10}(?=\s))$
于 2012-05-18T21:01:05.940 回答
0

您正在寻找的正则表达式是这样的:

/(?=^[-+]?\d*\.?\d+$)^.{1,10}$/

请记住,此正则表达式将允许输入的最大长度为 10,其中包括可选的+-开始时的符号和小数点.

于 2012-05-18T21:02:18.760 回答
0

这失败了,因为它有 11 位数字

Debug.WriteLine(Regex.IsMatch("12345678901", @"^\d{1,10}$").ToString());

在您澄清您需要最多 10 组由空格分隔的数字之前发布了上述答案。

测试了接受的答案,在 .NET Regex 中它对我来说失败了。即使修复了语法错误,它仍然不会按空格解析

试试这个

Debug.WriteLine(Regex.IsMatch(" 12345 678901 12   ", @"^\s*([+-]?\d+)(\s+[+-]?\d+){1,9}\s*$").ToString());
于 2012-05-18T21:09:13.063 回答