正则表达式:检查字符串是否包含至少一个数字

时间:2010-07-05 14:41:58

标签: regex

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

test1test

我想检查它是否包含至少一个使用正则表达式的数字。

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

9 个答案:

答案 0 :(得分:69)

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

\d

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

没有必要将它放在[方括号]中以将其定义为字符类,正如其他答案之一所做的那样; \d本身就可以正常工作。

由于它不是以^$为基础,因此它将匹配字符串的任何子集,因此如果字符串包含至少一个数字,则匹配。

并且不需要增加+的复杂性,因为目标只是确定是否至少有一个数字。如果至少有一个数字,这将匹配;它会以最小的开销实现这一目标。

答案 1 :(得分:17)

您正在寻找的正则表达式就是这样:

[0-9]

您没有提到您正在使用的语言。如果正则表达式求值程序强制REs被锚定,则需要:

.*[0-9].*

一些RE引擎(现代的!)也允许你把第一个写成\d(助记: d igit)然后第二个.*\d.*

答案 2 :(得分:13)

在Java中:

public boolean containsNumber(String string)
{
    return string.matches(".*\\d+.*");
}  

答案 3 :(得分:9)

你可以使用先行断言:

^(?=.*\d).+$

答案 4 :(得分:1)

此:

\d+

应该有效

编辑,不知道为什么我添加了“+”,没有它可以正常工作。

\d

答案 5 :(得分:0)

参考this

SELECT * FROM product WHERE name REGEXP '[0-9]'

答案 6 :(得分:0)

在perl:

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

其中\d与数字匹配。

答案 7 :(得分:0)

如果有人从Google跌落到这里,这就是检查字符串是否在C#中至少包含一位数字的方法:

使用正则表达式

    public static string SerializeToXml<T>(T dataToSerialize)
    {
        if (dataToSerialize == null) return null;

        using (StringWriter stringWriter = new StringWriter())
        {
            XmlSerializer serializer = new XmlSerializer(typeof(T));
            serializer.Serialize(stringWriter, dataToSerialize);
            return stringWriter.ToString();
        }
    }

信息:添加if (Regex.IsMatch(myString, @"\d")) { // do something } 所必需

使用linq:

using System.Text.RegularExpressions

信息:添加if (myString.Any(c => Char.IsDigit(c))) { // do something }

所必需

答案 8 :(得分:0)

另一种可能的解决方案,如果您要查找给定字符串中包含数字的所有单词

模式

\w*\d{1,}\w*
  • \w*-匹配0个或多个[A-Za-z0-9_]实例
  • \d{1,}-匹配一个或多个数字实例
  • \w*-匹配0个或多个[A-Za-z0-9_]实例

\w*中的全部要点是允许不允许在单词的开头或结尾使用字符。这样可以捕获文本中的最后个字。

如果此处的目标是仅获取不带单词的数字,则可以省略两个\w*

给出字符串

Hello world 1 4m very happy to be here, my name is W1lly W0nk4

比赛

1 4m W1lly W0nk4

在regexr中查看此示例-https://regexr.com/5ff7q