RegEx - wyrażenie regularne

0

Witam,

Mam problem. Mianowicie potrzebuję wyrażenie regularnego, które za pomocą replace do dowolnego ciągu cyfr doklei .00 np.:
1 -> 1.00
12 -> 12.00
itd.

przy czym jeśli sam wcisnę kropkę lub przecinek, to będę wpisywał częśc dziesiętną, czyli nie spowoduje to sytuacji, że
12.45 -> 12.45.00

0

Możesz dopisywać tylko w przypadku gdy wartość jest całkowita np. if((liczba-parseInt(liczba))>0) . W internecie pewnie są lepsze sposoby, ten wymyśliłem na szybko.

1

A czy masz jakiś kod już? Jeśli nie, tu jest wskazówka, jak zacząć: napisz najpierw wyrażenie regularne, które dopasuje część przed kropką, następnie napisz takie, które dopasuje kropkę. Tu możesz testować: https://www.debuggex.com/, jest na tej stronie także kompletna ściągawka dla wyrażeń regularnych w Javascripcie.

0

"2.53".replace(/(^[^.]*).*$/, "$1.00") => 2.00, ale możesz zrobić też tak: x = 2.3; (Math.round(parseFloat(x) * 100) / 100).toFixed(2); => 2.30.
Ciężko powiedzieć co masz na myśli bo nie sprecyzowałeś co ma się stać dla np. "2.3"

0

Ogólnie chodzi mi o to, że

  • jak będę wpisywał liczbę np. 1, 2, 45, to będzie się doklejać .00
  • jak wpiszę 1.1 to musi się zrobić 1.10
  • a jak wcisnę kropkę w trakcie wpisywania, to będe wpisywał częśc dziesiętną, ale już wtedy nie doklei .00
0

A rozwiązanie @krwq jest złe?

0

@SimpleCoder jak nie musi być regex, to użyj drugiego kodu z mojej poprzedniej odpowiedzi. Na jednego regexa nie jestem pewien czy się da, w każdym razie póki co nie mam pomysłu jak (i też mi się nie chce wymyślać), na 3 regexy możesz np. tak:

  1. obcina miejsca dziesiętne
  2. dopisuje jedno zero w przypadkach (XX.X)
  3. dopisuje dwa zera i kropke (dla liczb całkowitych)

czemu musi być koniecznie regex?

0

Ja to kiedyś tak zrobiłem:

var a = a+0.00000001;
var b = (a).toFixed(2);

I przy pomocy

replace(",", ".")

zmieniasz przecinek na kropkę.
U mnie działało dobrze, ale nie jestem dobry z Js i nie wiem czy to poprawne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1