2013-04-10 136 views
2

確定,所以我需要在形如x任何座標一個正則表達式,y,其中x和y爲單數從1到9正則表達式

我嘗試這樣做:

If Regex.IsMatch(TextBox1.Text, "[1-9],[1-9]") 

但是,當我只能在逗號​​的每一邊允許1-9的單個整數時,這允許諸如「11,99」的值。

請幫忙。謝謝!

+0

歡迎使用StackOverflow。如果某個問題有用地回答了您的問題之一,我們會要求您單擊該問題旁邊的接受選中標記,以便其他人可以稍後再回來,並更輕鬆地掃描答案以獲取有用的信息。 – Crisfole 2013-04-10 14:39:29

回答

3

它匹配表達式,因爲IsMatch返回true如果字符串至少包含給定正則表達式的一個匹配。如果您需要確保整個字符串與給定表達式匹配,則應將其重寫爲:

If Regex.IsMatch(TextBox1.Text, "^[1-9],[1-9]$") 
+0

''b'會更精確一點嗎?這樣它不一定是整條線...... – Crisfole 2013-04-10 12:48:04

+0

@ChristopherPfohl起初我寫了\ b但實際上在問題中不清楚它是否是一個座標列表(所以\ b可能是合適的)或一對無論如何,現在他知道這是一個選項... – 2013-04-10 13:11:16

+1

正是我爲什麼評論! – Crisfole 2013-04-10 13:12:07

0
If Regex.IsMatch(TextBox1.Text.Trim(), "^[1-9],[1-9]$") 

請注意添加的Trim()以防止空白造成的問題。

+0

它會匹配,例如,甚至這個:「,111」 – 2013-04-10 12:45:35

+0

@Adriano:良好的捕獲,更新。 – Pondidum 2013-04-10 12:50:33

+0

如果你已經使用正則表達式,那麼'Trim'是多餘的,只需在表達式的開始和結束處使用空格。 – 2013-04-10 12:52:14

0

你確定它允許重複嗎?我認爲之後需要添加+或*以允許多次出現。你在找什麼,定義它是字符串的開始,並在字符串的末尾結束

+0

它不允許重複,但它會匹配11,99。它匹配1,9部分,'忽略'1開始和9結束。你需要^和$來告訴正則表達式引擎你想匹配整個字符串 – 2013-04-10 12:48:21

+0

是的,只是不想直接說它,但你是對的:) 1 ** 1,9 ** 9 - >匹配 – Amegon 2013-04-10 12:54:11

+1

啊,我明白了。你正在給老師一個答案,小心翼翼地推問提問者自己想出來,然後進行更深入的學習和啓發:D我沒有讀太多第一行,對不起! – 2013-04-10 12:56:30