繁体   English   中英

用于验证最大长度为 10 个字符的 integer 的正则表达式

[英]RegEx for validating an integer with a maximum length of 10 characters

您能否指出适当的正则表达式来验证最大长度为 10 个字符的 integer?

有效的包括:1234567890

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

^\s*-?[0-9]{1,10}\s*$

这是每个部分的含义:

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

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

[^0-9][+-]?[0-9]{1,10}[^0-9]

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

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

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

在我所知道的大多数语言中,验证的实际正则表达式应为^[0-9]{1,10}$ ; 否则,如果要验证的数字是较长字符串的一部分,匹配器也将返回正匹配。

0123456789不是有效整数(通常会删除零)

我觉得像这个regexp这样的东西会更好用:

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

(不支持签名号码)

您可以使用:

^\d{1,10}$

检查示例:正则表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM