2013-02-02 139 views
1

我有一個文本框,其中用戶將按以下方式輸入數據。 例如1.2-2012-2 但它也可以; 12.5 -2010-4(強調第一部分) 我的第一種方法是MaskedTextBox,但由於第一部分沒有確定的大小,我不能使用它。 現在我想驗證文本框。即我將讓用戶輸入他/她想要的內容,但最終我想知道他/她是否以正確的方式輸入了內容。 例如如果用戶鍵入a12.4/2012^14(這是不正確的),我會知道。 我不知道如何將這個想法轉換成代碼,所以請有人指導我。 如果有其他方法。如何驗證文本框?

+3

這是什麼技術(例如winforms,wpf)? – Lukazoid

+0

你有什麼嘗試過什麼?輸入是什麼......總是會在輸入中出現。 – Anirudha

+0

@Lukazoid winforms \ –

回答

1

您可以使用TextChanged事件和Regex表達:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    var myRegex = new Regex(@"^(\d)+\.\d-(\d){4}-\d$"); 

    if (myRegex.IsMatch(textBox1.Text)) 
    { 
     //Validation is ok 
    } 
    else 
    { 
     //Validation isn't ok 
    } 
} 

我已經測試這段代碼。其作品。我不知道你的模式,但只有一個以上的唯一的東西應該工作。

如果。是可選的,然後使用這種模式:@"^(\d)+(\.\d)*-(\d){4}-\d$"

+0

。是可選的 現在我該做什麼? –

+0

如果。 (*。)\ * – algreat

+0

或在您的情況下@「^(\ d)+(\。\ d)* - (\ d){4} - \ d $」 – algreat

3

我想匹配的,所以最好在這裏使用正則表達式的文本框無法比擬的不一致輸入..

你可以使用這個表達式

^\d+(\.\d+)?-\d+-\d+$ 

然後,您可以檢查輸入像

if(Regex.IsMatch(input,regex)) 
    //valid 

^描述字符串的開頭

\d表示即0-9

+前面的字符1對多times..so \d+匹配一個數字將匹配1對多位數

?前面的字符0匹配到1 time.so (\.\d+)?相匹配的接着.被1至許多數字任選

$描繪字符串的末尾

^$我們指定的輸入起點和終點否則可以匹配之間的輸入..

+0

你能解釋一下它會做什麼嗎? –

+0

@WaqasAli檢查編輯 – Anirudha

+0

這樣就意味着 如果在第三部分我只希望用戶輸入2位數字 我輸入\ d \ d ??? –