代码之家  ›  专栏  ›  技术社区  ›  Brandon

在字符串中查找特定数字的regex?

  •  4
  • Brandon  · 技术社区  · 14 年前

    当用户提交表单时,我需要确保输入至少包含最少的位数。问题是我不知道输入的格式是什么。数字可能不在一行中,可能由字母、标点、空格等分隔。我不关心字符串的其余部分。

    我想用RegularExpressionValidator检查这个,但是我不太确定如何编写regex。

    我想这类似于一个电话号码regex,但电话号码至少有一些常见的格式。

    3 回复  |  直到 11 年前
        1
  •  12
  •   Bart Kiers    14 年前

    以下内容将与至少包含 n 数字:

    Regex.IsMatch(input, @"(\D*\d){n}");
    

    哪里 n 是整数值。

    简短解释:

    • \D* 匹配零个或多个非数字字符( \D 是为 [^0-9] [^\d] ;
    • 所以 \D*\d 匹配零个或多个后面跟数字的非数字字符;
    • (\D*\d){n} 分组并重复上一个 n 时代。
        2
  •  3
  •   Slider345    14 年前

    我会这样处理它:

    Regex.IsMatch(input, @"^(.*[0-9].*){10}$");

    换句话说,这将搜索10个数字,每个数字都由0个或多个字符包围。因为.*是贪婪的,所以任何额外的数字也会与它们匹配。

    不管怎样,退房 http://regexlib.com/RETester.aspx 如果没有要测试的对象,编写正则表达式可能会非常困难。

        3
  •  0
  •   Karlo Smid    11 年前

    为了至少有n个数字,需要使用以下regex:

    (\d*\d){n,}

    regex(\d*\d)n将精确匹配n位。

    问候,Karlo。