2013-11-21 7 views
0

У меня есть следующий Regex:Weird Regex Match

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

Я хотел что someString чтобы только форму, как x.y где x > 0 и 0 <= y <= 9. Но он не будет работать в качестве освобожденной, пример:

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

Равно в true, но это не может быть я также попробовал другой Regex:

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

Но это не имеет никакого значения. .. или что-то не хватает в моем шаблоне?

+0

0> = y> = 9 не может быть прав ... потому что y должно быть отрицательным и больше 9 в то же время, которое просто не работает. Опишите снова, какие значения вы хотите, чтобы вы были довольны. – Igle

+0

Я отмечаю, что ваши строки регулярных выражений недействительны, потому что '\ .' будет сообщать как« Unrecognized escape sequence ». Вы должны убедиться, что код, который вы предоставляете, завершает работу. :) – Chris

+0

@Igle: Я думаю, вам, возможно, придется перечитать его. Я не уверен, где вы получаете x, должен быть отрицательным и больше 9, и y - это одна цифра (это то, что это говорит в основном) кажется мне прекрасным. – Chris

ответ

7

Вы должны использовать старт-линии ^ и конца-линии $ якоря здесь или вы получите частичные совпадения, как в вашем случае, изменение:

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

Ваше оригинальное выражение совпадающего с часть 1.02, которая равна 1.0, и хотя она действительна и фактически действительна, если принимать ее в одиночку, привязки предотвращают выражение от соответствия частичным строкам и заставляют все выражение соответствовать.

+0

Это сделало это, спасибо. – hbsrud

+0

@ HB89 Приветствую вас, рад, что я мог бы помочь. –