【问题标题】:Regular expression for specific number of digits [closed]特定位数的正则表达式[关闭]
【发布时间】:2013-05-04 11:42:41
【问题描述】:

我想用 C# 编写一个正则表达式,它只输入特定数量的唯一数字。

就像写一个正则表达式来验证 5 位数字,比如“12345”

【问题讨论】:

标签: c# regex


【解决方案1】:

将以下正则表达式与Regex.IsMatch 方法一起使用

^[0-9]{5}$

^$ 将分别将匹配锚定到字符串的开头和结尾,以防止在长字符串的中间找到匹配,例如 1234567890abcd12345efgh .

[0-9] 表示一个字符类,它指定从09 的字符范围。该范围由以指定字符开头和结尾的 Unicode 代码范围定义。后面的{5} 是一个量词,表示重复[0-9] 5 次。

注意^\d{5}$的解法只等价于上面的解法,当指定RegexOptions.ECMAScript时,否则it will be equivalent to \p{Nd},匹配任何Unicode数字——这里是the list of all characters in Nd category。您应该始终检查您使用的语言的文档,以了解简写字符类实际匹配的内容。

我强烈建议您通读documentation。您可以使用其他资源,例如 http://www.regular-expressions.info/,但始终请查看您所使用语言的文档。

【讨论】:

    【解决方案2】:

    您可以在大括号中指定重复次数,如下所示:

    \d{5}
    

    如果您希望您的整个输入匹配一个模式,请将它们括在 ^$ 中:

    ^\d{5}$
    

    【讨论】:

    • 而且它不仅仅匹配0-9 数字。它还将匹配其他 Unicode 数字
    • @m.buettner 不,它只匹配 5 位数字。在另一场比赛中可能会返回更多数字。但是,如果 OP 打算确保 整个 输入由 5 位数字组成,他可以使用我在更新的答案中反映的 ^$
    • @nhahtdh OP 并没有具体说明他想要匹配什么样的数字。
    • 通知读者这样的事情很重要。这不是正则表达式风格的一致行为。
    【解决方案3】:

    这个表达式应该通过

    \d{5}[^\d]+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多