正则表达式仅从字符串中获取 NUMBER

Posted

技术标签:

【中文标题】正则表达式仅从字符串中获取 NUMBER【英文标题】:Regex to get NUMBER only from String 【发布时间】:2011-06-15 02:27:22 【问题描述】:

我从 XML 中收到“7+”或“5+”或“+5”,并且只想使用正则表达式从字符串中提取数字。 例如 Regex.Match() 函数

        stringThatHaveCharacters = stringThatHaveCharacters.Trim();
        Match m = Regex.Match(stringThatHaveCharacters, "WHAT I USE HERE");
        int number = Convert.ToInt32(m.Value);
        return number;

【问题讨论】:

【参考方案1】:

上面的答案很棒。如果您需要从不连续的字符串中解析出所有数字,那么以下内容可能会有所帮助:

string input = "1-205-330-2342";
string result = Regex.Replace(input, @"[^\d]", "");
Console.WriteLine(result); // >> 12053302342

【讨论】:

Regex.Replace(input, @"\D", "");【参考方案2】:

\d+

\d 代表任何数字,+ 代表一个或多个。如果你也想捕捉负数,你可以使用-?\d+

注意,作为一个字符串,它应该在 C# 中表示为"\\d+",或者@"\d+"

【讨论】:

【参考方案3】:

如果您只需要一个数字,[0-9]\d1 就足够了。如果您需要更多,请附加 +


1 语义略有不同,\d 可能匹配任何使用十进制数字的脚本中的任何十进制数字。

【讨论】:

请定义准确的正则表达式以在 Regex.Match 函数中使用....因为我不擅长正则表达式(语法) 对于单个数字,您不需要正则表达式:char digit = s.First(Char.IsDigit);。我会将其添加到我的答案中,但我认为这里不是这种情况。 @Kobi:不过,这仍然需要对字符串进行显式迭代。大多数选择使用正则表达式的人都不想这样做:-)

以上是关于正则表达式仅从字符串中获取 NUMBER的主要内容,如果未能解决你的问题,请参考以下文章

仅从文本中提取数字

iOS之正则表达式(转载)

仅从数字中删除双引号

限制为4-16位的正则表达式,怎么写?

正则表达式语法与正则表达式在iOS中的常见用法

正则表达式:用“|”匹配带括号的字符串运算符 [重复]