2013-02-28 4 views
1

В JavaScript я пытаюсь проверить пользовательский ввод, чтобы быть только действительной десятичнымиJavascript Regex для десятичных знаков

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

http://jsfiddle.net/FCHwx/

var regex = /^[0-9]+$/i; 

var key = '500.00'; 

if (key.match(regex) != null) { 
    alert('legal'); 
} 
else { 
    alert('illegal'); 
} 

Это отлично подходит для целых чисел. Мне нужно также разрешить десятичные числа (то есть до двух знаков после запятой)

Я пробовал много регулярных выражений, которые можно найти в stackoverflow , например. Simple regular expression for a decimal with a precision of 2

, но ни один из них не работает для этого случая использования

Что я делаю неправильно?

+0

Вопрос, который вы связаны, кажется, делает именно то, что вы хотите. Можете ли вы объяснить, почему они не работают, включая показ ввода, на который они не работают? – 2013-02-28 11:52:51

ответ

7

Это должно быть работа

var regex = /^\d+(\.\d{1,2})?$/i; 
+0

он не выглядит - попробуйте его в jsfiddle выше – ChrisCa

+0

@ChrisCa [да, это так] (http: // jsfiddle.net/barney/StH4F/). Кроме того, [108 пользователей StackOverflow не могут ошибаться] (http://stackoverflow.com/a/308124/356541), не так ли? ;) – Barney

+0

тот, с которым вы ссылаетесь, работает - он немного отличается от предыдущего (у него есть/i на конце, который, кажется, делает трюк - спасибо – ChrisCa

3

Вы пробовали это?

var regex = /^[0-9]+\.[0-9]{0,2}$/i; 
+0

вы можете использовать '\ d' вместо' [0-9] 'тоже, он не считает, что это имеет большое значение, но я думаю, что это хорошая практика для использования этих предопределенных классов символов. –

+0

@WouterJ согласен :) – orique

+0

Это позволило бы также «1.» как действительный ввод. – stema

1

Я рекомендую вам не использовать Regex для этого, но использовать простой !isNaN:

console.log(!isNaN('20.13')); // true 
console.log(!isNaN('20')); // true 
console.log(!isNaN('20kb')); // false 
0

Попробуйте это:

\d+(\.\d{1,2})? 

d для цифр г {1,2 } для 1 цифры раньше. и по меньшей мере 2 цифры, такие как 0,51

+0

3 означает 3 десятичных знака, он хочет только 2. –

+0

правый, думал, что это означает 3 символа в общем минимуме –