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

regex:检查字符串是否至少包含一个数字

  •  30
  • crauscher  · 技术社区  · 14 年前

    我有一个这样的文本字符串:

    test1test
    

    我想用regex检查它是否至少包含一个数字。

    这个正则表达式是什么样子的?

    7 回复  |  直到 9 年前
        1
  •  65
  •   Joe White    14 年前

    我很惊讶没有人提到最简单的版本:

    \d
    

    这将匹配任何数字。如果正则表达式引擎支持Unicode,这意味着它将匹配任何语言中定义为数字的任何内容,而不仅仅是阿拉伯数字0-9。

    没必要放进去 [ 方括号 ] 把它定义为一个角色类,就像其他答案一样; \d 工作本身就很好。

    因为它没有锚定 ^ $ ,它将匹配字符串的任何子集,因此如果字符串至少包含一个数字,这将匹配。

    也不需要增加 + 因为目标只是确定 至少一个 数字。如果至少有一个数字,这个数字将匹配;这样做的开销最小。

        2
  •  16
  •   Donal Fellows    14 年前

    您要查找的正则表达式如下:

    [0-9]
    

    你没有提到你用的是什么语言。如果正则表达式计算器强制固定res,则需要:

    .*[0-9].*
    

    一些发动机(现代发动机!)还允许您将第一个写为 \d (记忆地: D 然后第二个会变成 .*\d.* .

        3
  •  11
  •   CupcakePrincess1932    9 年前

    在Java中:

    public boolean containsNumber(String string)
    {
        return string.matches(".*\\d+.*");
    }  
    
        4
  •  8
  •   SilentGhost    14 年前

    您可以使用先行声明:

    ^(?=.*\d).+$
    
        5
  •  1
  •   Jurgen azngunit81    14 年前

    这是:

    \d+
    

    应该工作

    编辑,不知道为什么我添加了“+”,没有它工作得也一样好。

    \d
    
        6
  •  0
  •   Community Romance    7 年前

    裁判 this

    SELECT * FROM product WHERE name REGEXP '[0-9]'
    
        7
  •  0
  •   Kyra    14 年前

    在Perl中:

    if($testString =~ /\d/) 
    {
        print "This string contains at least one digit"
    }
    

    在哪里? \d 与数字匹配。