请您指出适当的RegEx来验证最大长度为10个字符的整数吗?
有效的包括:1234567890
答案 0 :(得分:31)
不要忘记整数 可以是否定的:
^\s*-?[0-9]{1,10}\s*$
以下是每个部分的含义:
^
:匹配必须从字符串的开头\s
:任何空白字符
*
:发生零次或多次-
:连字符 - 减号字符,用于表示负整数
?
:可能会发生也可能不会发生[0-9]
:ASCII码(或Unicode代码点)介于'0'和'9'之间的任何字符
{1,10}
:发生至少一次但不超过十次\s
:任何空白字符
*
:发生零次或多次$
:匹配必须以字符串结尾这会忽略前导和尾随空格,如果您认为逗号可以接受,或者您需要将减号计为十个允许的字符之一,则会更复杂。
答案 1 :(得分:20)
[^0-9][+-]?[0-9]{1,10}[^0-9]
单词:可选+或 - 后跟数字,重复一次,最多十次。请注意,大多数库都有一个数字的快捷方式:\d
,因此上面的内容也可以写成:\d{1,10}
。
答案 2 :(得分:4)
1到10:
[0-9]{1,10}
在.NET中(不仅如此,请参阅下面的评论)也有效(有规定):
\d{1,10}
C#:
var regex = new Regex("^[0-9]{1,10}$", RegexOptions.Compiled);
regex.IsMatch("1"); // true
regex.IsMatch("12"); // true
..
regex.IsMatch("1234567890"); // true
regex.IsMatch(""); // false
regex.IsMatch(" "); // true
regex.IsMatch("a"); // false
P.S。这是一个非常useful sandbox。
答案 3 :(得分:3)
在大多数语言中我都知道,验证的实际正则表达式应该是
^[0-9]{1,10}$
;否则,如果要验证的数字是较长字符串的一部分,匹配器也将返回正匹配。
答案 4 :(得分:0)
0123456789 不是有效整数(通常会删除零)
我认为像这样的regexp会更好用:
^[1-9]([0-9]*)$
(不支持签名号码)