我有一个这样的文字字符串:
test1test
我想检查它是否包含至少一个使用正则表达式的数字。
这个正则表达式是什么样的?
答案 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