регулярное выражение для валюты (евро) - PullRequest
1 голос
/ 03 июня 2011

Я пытаюсь этот код для проверки значения.(регулярное выражение с этого сайта )

ОБНОВЛЕНИЕ:

Теперь у меня есть

$value1=250;    

$value2=10000;

        if (!preg_match("/^(([^0]{1})([0-9])*|(0{1}))(\,\d{2}){0,1}€?$/", $form['salary']) || (!$form['salary'])>$value1."€" && (!$form['salary'])<$value2."€" ){
        echo ("invalido");
        return false;
    }
    else
    echo ("valido");
    return true;

код работает хорошо, но 20 € принято,проблема теперь не в регулярном выражении, а в сравнении значений, таких как 200 € или 1000 €.

это, вероятно, неправильно

(!$form['salary'])>$value1."€"

пример некоторых входных значений:

    200€
    200
    200.5
    200.50€

limits - 250€ to 10000€

спасибо

Ответы [ 3 ]

2 голосов
/ 03 июня 2011

Этот код ниже решил мою проблему:

if (!preg_match("/^(([^0]{1})([0-9])*|(0{1}))(\,\d{2}){0,1}€?$/", $form['salary'])) {
    echo "invalid";
    return false;
} else {
    $value1 = 400;
    $value2 = 10000;
    $salary = $form['salary'];
    $salary = preg_replace('/[€]/i', '', $salary);
    if($salary < $value1 || $salary > $value2) {
        echo "bad values";
        return false;
    } else {
        echo "valid";
        return true;
    }
}
1 голос
/ 03 июня 2011

Решение для регулярных выражений будет выглядеть так

^(?:10000|(?:(?:(?:2[5-9]\d)|[3-9]\d{2}|\d{4})(?:[,.]\d{2})?))€?$

Смотрите здесь на сайте Regexr

Но было бы лучше проверить, принадлежит ли значение диапазону, а не использовать регулярное выражение. Вы можете легко извлечь значение и выполнить обычную проверку <> для чисел за пределами.

0 голосов
/ 04 августа 2017

Мой вклад.Отлично работает.

final Pattern pattern = Pattern.compile("^([0-9]+)|((([1-9][0-9]*)|([0-9]))([.,])[0-9]{1,2})$");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...