我需要帮助形成正则表达式以将用户输入限制为仅数字且最多出现 10 次。
我有正则表达式,它只能将输入保留为数字,但我不能将其限制为最多 10 个。
这是我所拥有的:
^(0|[1-9][0-9]*)$
我可以接受负数、小数和 0。有什么建议吗?
我需要帮助形成正则表达式以将用户输入限制为仅数字且最多出现 10 次。
我有正则表达式,它只能将输入保留为数字,但我不能将其限制为最多 10 个。
这是我所拥有的:
^(0|[1-9][0-9]*)$
我可以接受负数、小数和 0。有什么建议吗?
^\s*([0-9)+){0,10}\s*$
这基本上说我想要 0 到 10 件东西,每件东西都是数字。我在任一侧添加了 \s* 以允许用户在其数字之前或之后放置空格。这会接受像
10 1231231 1231 1231 23112 123123
如果你真正想要的只是一个数字,最多只有 10 位数字,那就更容易了:
^\s[0-9]{1,10}\s$
你可以试试这个:
^(?<=\s)(\-?[\d]{1,10}(?=\s))$
您正在寻找的正则表达式是这样的:
/(?=^[-+]?\d*\.?\d+$)^.{1,10}$/
请记住,此正则表达式将允许输入的最大长度为 10,其中包括可选的+
或-
开始时的符号和小数点.
。
这失败了,因为它有 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());