Intereting Posts
суммирование активной записи в кодеригнере MySQL Создать триггер Вставить содержимое в другую таблицу из одной базы данных $ _FILES Empty При загрузке Как поместить значение в несколько категорий Как подойти к специалисту по викторине в Codeigniter Нужно ли использовать mysql_close (соединение)? Объясните базовый код сервера PHP Socket Как я могу узнать, на какой странице установлено приложение Facebook или какая страница загружает мое приложение? Помните, что флажки отмечены на разных страницах – какой лучший способ? Заполнение таблицы HTML из ответа AJAX Класс «ГузлHttp \ Клиент» не найден Почему я получаю эту ошибку сегментации в этом скрипте командной строки PHP? Введите поле идентификатора, сгенерированное с помощью триггера, но не пройденное как выводить таблицу позиций на лету из таблицы mysql результатов футбола ? select from multipe tables join return null, если столбцы не совпадают

регулярное выражение для валюты (евро)

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

ОБНОВИТЬ:

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

$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€ 

благодаря

Solutions Collecting From Web of "регулярное выражение для валюты (евро)"

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

 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; } } 

Решение regex будет выглядеть так:

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

См. Здесь онлайн по Regexr

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

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

 final Pattern pattern = Pattern.compile("^([0-9]+)|((([1-9][0-9]*)|([0-9]))([.,])[0-9]{1,2})$");