2011-12-09 82 views
2

我剛開始學習C#。對於noob問題抱歉。C#入口驗證正則表達式

我的第一個培訓應用程序是您輸入您的年齡並將其輸出到消息框中的應用程序。

我想使用正則表達式驗證輸入,以便輸入字母會引發錯誤。

問題是我不能讓它接受正則表達式。

 private void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      string age; 
      age = textBox1.Text; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      string regexpattern; 
      regexpattern = "^\t+"; 
      string regex1; 

      regex1 = Regex.IsMatch(regexpattern); 

      if (textBox1.Text == regex1) 
      {    
       MessageBox.Show("error, numbers only please!"); 
      }   
      else 
      { 
       string age; 
       string afe; 
       string afwe2; 

       afe = "You are "; 
       age = textBox1.Text; 
       afwe2 = " years old!"; 

       MessageBox.Show(afe + age + afwe2); 
      } 
     } 

謝謝!

+0

爲什麼投票結束這太局部?這是一個非常有效的C#/ Regex問題。 –

+1

試試這個正則表達式\ d + –

+0

你是什麼意思,你不能讓它接受?如果你的意思是這個錯誤是數字顯示的,那是因爲你的正則表達式是錯誤的。你可能想要像'@「^ \ d + $」'。 – svick

回答

4

你的正則表達式必須是

regexpattern = "^\d+$"; 

編輯 和編碼是錯誤的。它必須是這樣的:

var regex = new Regex(@"^\d+$"); 

if (!regex.IsMatch(textBox1.Text)) 
{ 
    MessageBox.Show("error, numbers only please!"); 
} 
+0

這不會編譯。您需要轉義反斜槓或使用逐字字符串。 –

+0

@JustinMorgan:謝謝你提到。我在網頁瀏覽器中編輯過......我已更正了示例。 – Fischermaen

2

任何開發人員的好資源是正則表達式庫。你正在尋找的機會已經發布在那裏。例如,您可能希望將年齡限制在一定範圍內。

regex library

+0

另外,http://www.regexbuddy.com/。一個非常棒的工具,可以與正則表達式一起工作。 –

2

你並不需要一個正則表達式,就檢查它是否是一個數字: 這裏是一個示例代碼,希望它應該工作。

private void button1_Click(object sender, EventArgs e) 
{ 
    string age = textBox1.Text; 
    int i = 0; // check if it is a int 
    bool result = int.TryParse(age, out i) // see if it is a int 
    if(result == true){ // check if it is a int 
     string afe; 
     string afwe2; 
     afe = "You are "; 
     afwe2 = " years old!"; 
     MessageBox.Show(afe + age + afwe2); 
    } else { 
     MessageBox.Show("Please Enter a Number!"); // error message 
    } 
} 
+0

+1這比使用正則表達式進行簡單的年齡分析更好。 – mattypiper

+1

但它可以編碼較少「健談」的字符串。格式 – Fischermaen

+0

是真實的,但這並沒有發生在我:(:(偉大的建議,但。 – Annabelle

1

正則表達式

不必要的+\d驗證人的青睞。 一個人通常在幾年之間生活0/113。 :)

if(Regex.IsMatch(age, @"^\d{0,3}")) 

其他的方法來做到這一點:使用LINQ 使用int.TryParse

int AgeAsInt; 
if(int.TryParse(age, out AgeAsInt)) 

:作爲

if(!String.IsNullOrEmpty(age) && age.All(char.IsDigit)) 

我會把它

if (int.TryParse(age, out ageAsInt) && ageAsInt <= 113) 

你可以使用它想要它。我個人更喜歡最後一個。