2012-02-13 6 views
0

Я пытаюсь проверить валюту с помощью следующей функции:проверка валюты в JavaScript

function checkwages(input){ 
    var validformat=/^\d{0,5}(\.\d{1,2})?$/; 
    if (validformat.test(input)) { 
     // alert("$:"+ input + " test"); 
     return true; 
    } 
    return false; 
} 

Цель состоит в том, чтобы убедиться, что пользователь вводит либо номер или десятичный формат. Он не может быть 0 или отрицательным. Однако, когда поле ввода пустое, это не выполняется, так как в этом формате действительны 0 цифр. Однако, если я изменю его на /^\d{1,5}(\.\d{1,2})?$/, тогда .21 станет недействительным и заставит пользователя ввести что-то вроде 0.21. Как изменить регулярное выражение так, чтобы даже .21 считалось допустимым числом?

Благодаря

+0

Есть ли регулярные выражения JavaScript, которые требуют взглядов? Если нет, вы не можете сделать это только с одним регулярным выражением. – m0skit0

+0

Есть способ изменить регулярное выражение, чтобы рассмотреть это ИЛИ, что я просто не мог найти правильный способ сделать это. Все мои испытания потерпели неудачу так или иначе. Но я уверен, что есть способ сделать это с одним регулярным выражением. – Kiran

+0

Вы не ответили на мой вопрос. Во всяком случае, поэтому, если я правильно понимаю, вы хотите, чтобы он принял число без десятичной точки (например, 2345), с десятичной точкой (234.56), а также .XX, правильно? – m0skit0

ответ

1
/^(?=.*[1-9])\d{0,5}(\.\d{1,2})?$/ 

бит в начале ищет ненулевое значение в любом месте строки, но не фиксирует его.

+0

Это просто работает .. – Kiran

+0

Это волшебство !! :) –

-2

Там нет никакого способа доказать с RegEx, что вход больше, чем 0. Но это один из ваших условий («Это не может быть 0»). Таким образом, даже с вашим вторым RegEx пользователь может ввести 0 или 0.0, и это будет оценено как true.

Мое предложение состоит в том, что вы используете ваш первый RegEx и объединить его с помощью этого простого сравнения:

if (validformat.test(input) && input.length > 0 && input > 0) 

Тогда проверка должна отвечать всем вашим требованиям, и это очень просто (динамическая типизация FTW).

+0

Нет, не получится. Прочтите его вопрос еще раз, он объясняет, почему:) – m0skit0

+0

Да, я забыл про пустой ввод. Но это не проблема. Просто добавьте «input.length> 0», и он будет работать. Я отредактировал свой ответ, чтобы он теперь был прав. – styrr

+0

Кстати ''> 0 возвращает false. Поэтому input.length> 0 не требуется. – styrr

Смежные вопросы