检查字符串是否有字符,而不会挂起空格

时间:2014-03-31 20:05:52

标签: c# regex wpf string integer

目前,在我的程序中,我通过使用以下Regex方法和if语句检查我的字符串以查看它们是否不是整数值:

if(Regex.IsMatch(myString, @"^\d+$") == false) {}

但是,我需要允许以下值:" 45 23 12"。这些值涉及空格,我认为这些空格被Regex计为字符,因为每当我尝试像前一个例子时,我的代码都会返回false。

如何在允许使用空格的情况下检查不是整数的值?

This question使用Regex.Matches(myString,@"[a-zA-Z]").Count来检查来自' a-z'的所有字符出现的字符串,这并不涉及" &#34 ;.但是,当我在我的if语句中使用它时,我注意到它的类型为Int,不能与false==进行比较。

3 个答案:

答案 0 :(得分:2)

if(! Regex.IsMatch(myString, @"^\s*\d(\d|\s)*$")) { ... }

答案 1 :(得分:1)

我会使用正则表达式

^\d+(\s\d+)*$

说明:

^          beginning of line.
\d+        one or more digits.
(\s\d+)*   zero, one or more repetitions of space + one or more digits.
$          end of line.
if (!Regex.IsMatch(myString, @"^\d+(\s\d+)*$")) {
    ...
}

请写下

!<boolean expression>代替<boolean expression> = false

<Boolean expression>代替<Boolean expression> = true

您不能写1 * x,而只需x

很多人认为if语句需要进行比较。他们不。他们需要的是布尔表达式,即表达式为truefalse的表达式。 Regex.IsMatch(...)会返回bool值,这就是我们所需要的。

答案 2 :(得分:0)

尝试以下正则表达式(如果我正确理解您的问题。

^(?:\d|\s)+$

它似乎做你想要的和here is the test for it