繁体   English   中英

C#正则表达式仅字符串中的数字字符

[英]c# regular expression only numerical characters in string

我想检查长度不确定的字符串是否仅包含数字。 例:

"234324" = true
"er32" = false
"1" = true

我尝试解决此问题的方法是这样的:

public bool Validate(string input)
{
    return (Regex.IsMatch(input, @"^\d+$")) ? true : false;
}

现在我不是一个有正则表达式的大英雄,但是根据我在互联网上可以找到的所有内容,表达式"^\\+$""^[0-9]$"都可以,但是它不起作用:(

这里不需要RegEx ,可以使用int.TryParse来检查string是否为有效整数。

public bool Validate(string input)
{
     int myNumber;
     return int.TryParse(input, out myNumber);
}

注意IsMatch已经返回了bool ? true : false ? true : false是没有用的。

int number;
return int.TryParse(input, out number);

使用"^[0-9]+$""^[0-9]$" + "^[0-9]$" (注意+字符),这意味着将评估多个字符。

^\\d+$应该可以为我工作。 最后的两个示例将不起作用,因为^\\+$缺少d (我认为这是一个错字,但应该是^\\d+$ ),第二个示例需要在方括号后加上一个加号(即^[0-9]+$ )。

我会检查一下是否修剪输入会有所不同,您可能会有空格引起问题。 否则,您的错误将出现在其他地方,而不是此代码中。

如果字符串确实可以是任意长度,那么Ray正确地说,如果字符串表示的数字> Int32.MaxValue,则接受的答案中的代码将失败。

下面的示例将返回false而不是true:

bool isNumber = Validate(Int64.MaxValue.ToString()); // isNumber == false

这是适用于任意长度字符串的替代解决方案:

public bool Validate(string input)
{
   return input.ToCharArray().All(c => Char.IsDigit(c));    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM