Автор Тема: Питане за регулярен израз  (Прочетена 7643 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

rargirov

  • Гост
Питане за регулярен израз
« -: 30 Януари 2013, 22:50:51 »
Привет на всички,
Иска да ви попитам, някой дали има нещо готово за валидация на пари? Само цифри(0-9), запетая и точка. Като ще заменям запетаята с точка в последствие (ако я има). Или ако препоръчате по-добро решение?

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Питане за регулярен израз
« Отговор #1 -: 30 Януари 2013, 22:55:13 »
Разгледай този сайт.
Сайта представлява един вид библиотека от написани рег. изрази. Мисля, че дори имаха и рейтинг.
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Питане за регулярен израз
« Отговор #2 -: 30 Януари 2013, 23:18:20 »
Опитай следното:
Код: PHP
  1. $pattern="([1-9]\d{,6}|0)(\.\d0?)? ";
  2. //като променливата стринг ти държи стойността, която трябва да обработи регулярния израз.
  3. preg_match($pattern, $string);
  4.  
  5.  

rargirov

  • Гост
Re: Питане за регулярен израз
« Отговор #3 -: 31 Януари 2013, 08:38:09 »
Сайтът е много полезен. Мисля, че ще го ползвам и за напред.
Благодаря и двамата за бързите и точни решения :)

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Питане за регулярен израз
« Отговор #4 -: 31 Януари 2013, 18:58:47 »
Код: Javascript
  1. $('input.dcena[name=cena_in]').live('keyup', function(){
  2.         this.value = this.value.replace(/[^0-9.,]/g, '');
  3.         this.value = this.value.replace(',', '.');
  4.     });
Това в реално време заменя "," с "." и допуска само цифри в полето :) (ползвам го в складова програма с jQuery)
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

rargirov

  • Гост
Re: Питане за регулярен израз
« Отговор #5 -: 05 Февруари 2013, 11:27:37 »
@HanKrum Благодаря!
Хм... А може ли да се направи да приема само по една точка, всяка следваща да я филтрира както прави с буквите?

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Питане за регулярен израз
« Отговор #6 -: 05 Февруари 2013, 14:11:11 »
Покажи как де, че да видят и другите :)
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Питане за регулярен израз
« Отговор #7 -: 05 Февруари 2013, 16:25:33 »
Хане това с jquery-то е на оферта, но ако да кажем си изключа javascript-a какво правим?

rargirov

  • Гост
Re: Питане за регулярен израз
« Отговор #8 -: 05 Февруари 2013, 16:43:20 »
@HD - При мен - няма да се събмитне формата. С PHP си остава валидацията след събмитване.
Като го измисля, ще го постна, че сега се заминавам с друго.
« Последна редакция: 05 Февруари 2013, 16:56:55 от rargirov »

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Питане за регулярен израз
« Отговор #9 -: 05 Февруари 2013, 17:19:50 »
Ице, ти на колата махаш ли моторчетата на стъклата или жилото на парното, все пак сме 21 век, който го е страх от мечки, да не ходи в гората.
Код: HTML
  1. <noscript>За да карате ски, са ви нужни поне ски :)</noscript>
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Питане за регулярен израз
« Отговор #10 -: 05 Февруари 2013, 18:12:16 »
Ето ако така се мисли не е много правилно. Какво стана с правилото never trust the user? Никъде не съм казал, че не е правилно да се ползва jquery. Mисълта ми беше, че не е хубава практика да се валидира само с него. Хане колкото и да е странно все още има хора дето по незнайни причини и за мен си спират javascript-a.

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Питане за регулярен израз
« Отговор #11 -: 05 Февруари 2013, 20:26:35 »
Само цифри(0-9), запетая и точка. Като ще заменям запетаята с точка в последствие (ако я има).

С една дума искаш да мачва цели и "плаващи" числа, като за вторите от последния ти пост виждам, че искаш, ако присъства запетая(която да замениш в последствие с точка) то да присъства само веднъж ?
Код: PHP
  1. $pattern = '/^\d+(?:[,.]\d+)?$/';
  2. //можеш да замениш плюсчетата с диапазано на броя числа преди и след запетаята/точката

Или ако препоръчате по-добро решение?

И дали няма да е по-добре да проверяваш типа на съдържането на полето с функцийките is_int(), is_float() ?
Със сигурност ще са по-бързи от функциите за боравене с регулярени изрази.



HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Питане за регулярен израз
« Отговор #12 -: 05 Февруари 2013, 20:57:00 »
Ето ако така се мисли не е много правилно. Какво стана с правилото never trust the user? Никъде не съм казал, че не е правилно да се ползва jquery. Mисълта ми беше, че не е хубава практика да се валидира само с него. Хане колкото и да е странно все още има хора дето по незнайни причини и за мен си спират javascript-a.
Ице, то все едно да се чудиш защо продължават да пият и да се качват зад волана :)

п.п. Аз не валидирам само с js, след изпращането минава нормализация и валидация задължително :)
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Питане за регулярен израз
« Отговор #13 -: 05 Февруари 2013, 21:02:52 »
Именно.  Това е правилната постановка на нещата. За тва ако трябва на валидация на пари или правиш някакъв софт за пари, трябва да се ползва езици като Java и .NET, защото силната типизация тука просто е задължителна.