2015-03-10 2 views
1

для моего проекта мне нужно такое регулярное выражение, которое соответствует входной цене, которая принимает:регулярное выражение, которое соответствует положительные целые и положительные значения с плавающей точкой только

(25.99, 15.5, 30.00, 0.5 or 50) 

но не принимает:

(0, 0.00, -25.99, -50, $32 or €32). 

Я нашел некоторые регулярные выражения, но ни один из них не соответствует моим требованиям. следующее мое текущее регулярное выражение, но его не устраивающие мое состояние:

^(\$|)([1-9]\d{0,2}(\,\d{3})*|([1-9]\d*))(\.\d{2})?$ 
+0

Почему вам нужно регулярное выражение для этого? Просто введите значения для float и проверьте, являются ли они> 0.0. Если бросок терпит неудачу, они также не то, что вы ищете. –

+0

Регулярные выражения, в то время как они * могут * делать то, что вы просите, не предназначены для этого. Было бы намного проще проверить, что у вас есть числовое выражение, отбросить его до соответствующего типа, а затем проверить, что он положительный. – Xophmeister

ответ

0

Вы можете использовать это регулярное выражение:

/^(?![0.]+$)\d+(\.\d{1,2})?$/gm 

RegEx Demo

+0

прохладно, но его прием 15.000. Более двух чисел после десятичной запятой не требуется. –

+0

ok проверить мое обновленное регулярное выражение и новую демонстрацию – anubhava

+1

отличная работа bro. большое спасибо. это сработало. –

0

Как насчет:

^[1-9]\d*(?:\.\d\d?)?$ 
+0

отличная работа bro .. , но его не соответствует 15.5 :( –

+0

@DanishJamil: Посмотрите мои изменения, теперь это делает;) – Toto

+0

работал спасибо, брату ... –

0

Может быть вы можете сделать это без регулярных выражений?

val = parseFloat(str); 
if (val > 0.0) { 
    console.log('Correct'); 
} else { 
    console.log('Wrong'); 
} 
Смежные вопросы