RegEx用于验证最大长度为10个字符的整数

时间:2011-01-15 23:17:12

标签: regex

请您指出适当的RegEx来验证最大长度为10个字符的整数吗?

有效的包括:1234567890

5 个答案:

答案 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]*)$

(不支持签名号码)