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

wlwcrazw  于 2023-04-07  发布在  其他
关注(0)|答案(9)|浏览(172)

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

test1test

我想用正则表达式检查它是否至少包含一个数字。
这个正则表达式会是什么样子?

6g8kf2rb

6g8kf2rb1#

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

\d

如果你的正则表达式引擎支持Unicode,这意味着它将匹配任何语言中定义为数字的任何内容,而不仅仅是阿拉伯数字0-9。
不需要像其他答案那样将它放在方括号[中来定义为字符类;\d本身工作正常。
因为它没有用^$锚定,所以它将匹配字符串的任何子集,所以如果字符串至少包含一个数字,它将匹配。
而且不需要增加+的复杂性,因为目标只是确定是否有 * 至少一个 * 数字。并且它将以最小的开销来完成。

jgwigjjp

jgwigjjp2#

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

[0-9]

你没有提到你使用的是什么语言。如果你的正则表达式计算器强制RE被锚定,你需要这个:

.*[0-9].*

一些RE引擎(现代的!)还允许您将第一个写为\d(助记符:**d**igit),第二个将变为.*\d.*

nkoocmlb

nkoocmlb3#

在Java中:

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

gpnt7bae4#

你可以使用look-ahead assertion:

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

vtwuwzda5#

另一种可能的解决方案,如果你正在寻找一个给定的字符串中的所有单词,其中包含一个数字

模式

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

\w*的关键是允许not在单词的开头或结尾有一个字符。这可以捕获文本中的第一个最后一个单词。
如果这里的目标是只获得数字而不获得单词,则可以省略\w*

给定字符串

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

匹配

检查regexr -https://regexr.com/5ff7q中的示例

41ik7eoe

41ik7eoe6#

参考此

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

zqry0prt7#

这一点:

\d+

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

\d
6tqwzwtp

6tqwzwtp8#

在perl中:

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

其中\d匹配数字。

gdx19jrr

gdx19jrr9#

如果有人从google上福尔斯这里,这是如何在C#中检查字符串是否至少包含一个数字:

  • 使用Regex*
if (Regex.IsMatch(myString, @"\d"))
{
  // do something
}
  • 信息:需要添加using System.Text.RegularExpressions*
  • 使用linq:*
if (myString.Any(c => Char.IsDigit(c)))
{
  // do something
}
  • 信息:需要添加using System.Linq*

相关问题