![](/img/trans.png)
[英]C# regular expression to strip all but alphabetical and numerical characters from a string?
[英]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.