2013-11-21 151 views
0

我有以下的正則表達式:奇怪的正則表達式匹配

Regex.IsMatch(someString, "[1-9][0-9]*\.[0-9]") 

我想這someString只允許像x.y其中x > 00 <= y <= 9一種形式。 但它不會工作作爲例外,一個例子:

someString = "1.02" 
Regex.IsMatch(someString, "[1-9][0-9]*\.[0-9]") 

的equals true,但不能 我也嘗試另一個正則表達式:

Regex.IsMatch(someString, "[1-9][0-9]*\.[0-9]{1}") 

但它並沒有區別。 ..或者在我的模式中有什麼缺失?

+0

0> = y> = 9不可能是正確的......因爲y必須是負數,並且在同一時間大於9,這根本不起作用。請再次描述你想讓你的價值。 – Igle

+0

我注意到你的正則表達式字符串是無效的,因爲'\ .'會報告爲「無法識別的轉義序列」。你應該確保你提供的代碼正在完成工作。 :) – Chris

+0

@Igle:我想你可能需要重讀它。我不確定你得到的x必須是負數,大於9並且y是單個數字(這就是基本上說的),對我來說似乎很好。 – Chris

回答

7

您需要使用^這裏$錨結束行,否則你會得到像部分匹配你的情況行開始時間的,更改爲:

^[1-9][0-9]*\.[0-9]$ 

你的原始表達式相匹配的部分1.02這是1.0,雖然它是有效的,並且它在單獨使用時實際上是有效的,但錨會阻止表達式匹配部分字符串並強制整個表達式匹配。

+0

這樣做,謝謝。 – hbsrud

+0

@ HB89歡迎您,很高興我能提供幫助。 –