2014-03-31 28 views
1

目前,在我的計劃,我檢查我的琴絃,看看他們是否是一個整數值,而不是通過使用以下方法Regexif沿聲明:的字符字符串檢查,而不會掛在空間

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

但是,我需要允許的值如:「45 23 12」。這些值涉及空格,我認爲這些空格被Regex計算爲字符,因爲每當我嘗試像上一個示例時那樣,我的代碼就會返回false。

如何在允許使用空格的同時執行非整數值檢查?

This question使用Regex.Matches(myString,@"[a-zA-Z]").Count檢查來自'a-z'(不涉及「」)的所有字符出現的字符串。但是,我注意到,在我的if聲明中使用它時,它的類型爲Int,無法與false==進行比較。

+0

不要在你的if語句中加入'Matches'。將其更改爲「IsMatch」 – paqogomez

+0

「45 23 12」是否應該視爲單個整數? – Malk

+0

@Malk不,他們是個人 –

回答

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

這工作,非常感謝你! –

0

試試下面的正則表達式(如果我正確地理解你的問題。

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

似乎做你想要什麼,here is the test for it

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值,這是我們所需要的。