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

OrE*_*lse 19 regex

你能否指出适当的RegEx来验证一个最大长度为10个字符的整数?

有效的包括:1234567890

Ple*_*and 31

不要忘记整数可能是负数:

^\s*-?[0-9]{1,10}\s*$
Run Code Online (Sandbox Code Playgroud)

这是每个部分的含义:

  • ^:匹配必须从字符串的开头开始
  • \s:任何空白字符
    • *:发生零次或多次
  • -:连字符 - 减号字符,用于表示负整数
    • ?:可能会或可能不会发生
  • [0-9]:ASCII码(或Unicode代码点)介于"0"和"9"之间的任何字符
    • {1,10}:发生至少一次,但不超过十次
  • \s:任何空白字符
    • *:发生零次或多次
  • $:匹配必须在字符串结尾处结束

这会忽略前导和尾随空格,如果您认为逗号可以接受,或者您需要将减号计为十个允许字符之一,则会更复杂.


mik*_*iku 20

[^0-9][+-]?[0-9]{1,10}[^0-9]
Run Code Online (Sandbox Code Playgroud)

单词:可选+或 - 后跟数字,重复一次,最多十次.请注意,大多数库都有一个数字的快捷方式:\d因此上面也可以写成:\d{1,10}.

  • 这不会返回一个15位数字以及该数字的前十位数字吗? (3认同)

aba*_*hev 5

1 到 10:

[0-9]{1,10}
Run Code Online (Sandbox Code Playgroud)

.NET 中(不仅如此,请参阅下面的评论)也有效(有规定):

\d{1,10}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

PS 这是一个非常有用的沙箱

  • 不仅在 .NET 中。但请记住,正则表达式引擎通常将 `\d` 视为*任何十进制数字*,其中可能包括阿拉伯语、泰米尔语等。 (2认同)