Ga naar inhoud

regex replace euro formaat


IE8

Aanbevolen berichten

Twee vragen aan iemand die overweg kan met reguliere expressies:

1. In een input veld wordt een bedrag in euro ingegeven. Met welke reguliere expressie kan dit bedrag in ons gebruikelijke formaat omgezet worden (om de 3 digits een punt als scheidingsteken, decimale komma, twee cijfers na de komma) ?

2. Met dit bedrag moet verder gerekend worden, het moet bijgevolg omgezet worden in een number. Met welke reguliere expressie kan ik de punten verwijderen en de komma vervangen door een punt ?

Bij voorbaat dank voor elke vorm van hulp hierbij.

Link naar reactie
Delen op andere sites

Yippie,

Toen ik eindelijk ontcijferd had wat je precies met Reguliere expressies bedoelde kwam ik denk ik met de oplossing.

function count(){

//function naam en begin.

var y = document.getElementById("input").value;

// Je geeft de input area (text input area) het id van input, en je haalt deze terug met javascript.

// De waarde van je input area benoem je variable y (deze variable is nu een String wat het onmogelijk maakt om met hem

// te gaan rekenen.

y = parseFloat(y);

// De magische truck, je zorgt met de functie pareFloet (ingebouwd) ervoor dat de string naar float wordt omgezet

// float is dus 0.00 ( gebruik de . ) dit zorgt ervoor dat je euro waarde tot op erg veel decimalen niet wordt afgerond

// dus als je 0.014482142 invult blijft dit getal, en wordt het niet 0 (INT)

x = 1.2314;

// (euro dollar koers)

z = y * x;

// Euro maal de koers wordt $ DOLLARS

// nu nog even afronden want van, 1.2314 dollars heb ik nog nooit gehoord :)

z = Math.round(z * 100)/100;

z.toString();

document.write(y + " Euro = " + z + " Dollar");

}

Ok dit is dus de code,

Waar moet je op letten!.

- De input is een string convert hem naar Float, Voor geld.

- De input kan tekens bezitten, deze kun je (niet gedaan in dit script) filteren.

- Reken de input om naar dollars, heb ik nu gedaan met een variabel (x), maar dat hoeft niet per se.

- Dan moet je het antwoord afronden zodat je geen 2.234892348 of zo iets krijgt.

- Dan moet je de float naar String wijzigen (Dit hoeft niet), maar het zorgt er voor dat je zeker geen error krijgt.

En paar dingen die je eventueel nog zou kunnen toevoegen.

- Document.write() veranderen (naar getElementById("").innerHTML (of value)), Aangeraden! , maar logisch.

- Dit is een belangrijke, filteren, probeer zo veel mogelijk te filteren, en je kunt (ook aangeraden) de ,'s dus de , veranderen naar . dus naar punten, dit zorgt ervoor dat als mensen toch een , invullen dit wordt gezien als een . en dat javascript toch met die Floats kan rekenen.

Ik hoop dat je er wat aan hebt.

Veel Succes

ps:

Ik heb er zo lang over gedaan dat ik moest reloggen. :embarassed:

en een werkend voorbeeld.

http://ecence.nl/test.php

aangepast door ecence
Link naar reactie
Delen op andere sites

Sorry dat de quote (code) zo onduidelijk is, maar het is de manier om codes te posten volgens het pc-helpforum.

omdat het moeilijk te lezen is en de . punten en , komma's moeilijk van elkaar te zijn onderscheiden nog een keer zonder quote.

function count(){

//function naam en begin.

var y = document.getElementById("input").value;

// Je geeft de input area (text input area) het id van input, en je haalt deze terug met javascript.

// De waarde van je input area benoem je variable y (deze variable is nu een String wat het onmogelijk maakt om met hem

// te gaan rekenen.

y = parseFloat(y);

// De magische truck, je zorgt met de functie pareFloet (ingebouwd) ervoor dat de string naar float wordt omgezet

// float is dus 0.00 ( gebruik de . ) dit zorgt ervoor dat je euro waarde tot op erg veel decimalen niet wordt afgerond

// dus als je 0.014482142 invult blijft dit getal, en wordt het niet 0 (INT)

x = 1.2314;

// (euro dollar koers)

z = y * x;

// Euro maal de koers wordt $ DOLLARS

// nu nog even afronden want van, 1.2314 dollars heb ik nog nooit gehoord :)

z = Math.round(z * 100)/100;

z.toString();

document.write(y + " Euro = " + z + " Dollar");

}

Link naar reactie
Delen op andere sites

Heel erg bedankt voor jouw gewaardeerde bijdrage.

Ik zoek echter geen omrekening van euro naar dollar.

Vraag 1: Een willekeurige invoer in het input veld omzetten naar een valabel euroformaat.

Bijvoorbeeld: 1,234.5 bij onBlur in het input veld wijzigen in 1.234,50 (of 12 in 12,00)

Vraag 2: Vervolgens een variabele maken van het euroformaat om (op de achtergrond) verder mee te kunnen rekenen.

Bijvoorbeeld: de string 1.234,50 omzetten naar het number 1234.5 (of 12,00 in 12)

De kortste en handigste manier is daarvoor een reguliere expressie (of regex) te gebruiken. Ik probeer dit al geruime tijd maar totnutoe zonder het gewenste (foolproof) resultaat.

Link naar reactie
Delen op andere sites

<html>

<head>

<head>

<body>

<form action="javascript:count()">

<input type="text" id="input" onblur="go()"></input>

<input type="submit" ></input>

</form>

<script>

function count(){

//function naam en begin.

var y = document.getElementById("input").value;

// Je geeft de input area (text input area) het id van input, en je haalt deze terug met javascript.

// De waarde van je input area benoem je variable y (deze variable is nu een String wat het onmogelijk maakt om met hem

// te gaan rekenen.

y = parseFloat(y);

// De magische truck, je zorgt met de functie pareFloet (ingebouwd) ervoor dat de string naar float wordt omgezet

// float is dus 0.00 ( gebruik de . ) dit zorgt ervoor dat je euro waarde tot op erg veel decimalen niet wordt afgerond

// dus als je 0.014482142 invult blijft dit getal, en wordt het niet 0 (INT)

x = 1.2314;

// (euro dollar koers)

z = y * x;

// Euro maal de koers wordt $ DOLLARS

// nu nog even afronden want van, 1.2314 dollars heb ik nog nooit gehoord :)

z = CurrencyFormatted(z);

z.toString();

document.write(y + " Euro = " + z + " Dollar");

}

function CurrencyFormatted(amount)

{

return (parseFloat(amount) + 0.00).toFixed(2);

}

function go(){

q = document.getElementById("input").value;

q = q.replace(",",".");

q = CurrencyFormatted(q);

document.getElementById("input").value = q;

}

</script>

</body>

</html>

hierin staat de code, ik heb nu weinig tijd, maar je zult het vast begrijpen, je kunt met deze code alles bereiken wat je graag wou.je kunt alleen verder rekenen als je de , in een . verandert, dus als jij verder wilt rekenen met een , gaat dat niet lukken.wel kun je, zoals ik in de code heb gedaan, de , in een punt veranderen, voor de berekening.en als je wilt kun je de . weer in een , veraderen bij als je hem wilt laten zien aan de gebruiker.je zult er waarschijnlijk wel uitkomen en als het niet lukt, kun je gewoon weer reageren op dit topic, dan kan ik waarschijnlijk vanavond nog reageren.

het werkend resultaat is weer te zien op http://ecence.nl/test.php

Link naar reactie
Delen op andere sites

Heel erg bedankt voor jouw inspanningen om mij te helpen. Wat ik wens is echter iets ingewikkelder dan dit, geen wonder dat ik al maandenlang aan het proberen ben om een foolproof script ineen te knutselen. Ik heb deze vraag gestuurd naar de webmaster van 'JavaScripts knippen en plakken' (JAVASCRIPTs KNIPPEN EN PLAKKEN) en prompt ontving ik de link terug naar een website die de door mij gezochte oplossing biedt: accounting.js - format money / currency in JavaScript. Je moet de demo 'Money formatting' maar eens proberen (met euro) om te zien wat ik bedoelde.

Ik geef de betreffende website hier mee voor iedereen die met hetzelfde probleem worstelt, ik dank de webmaster van 'JavaScripts knippen en plakken' voor de snelle en accurate respons en ik bedank je nogmaals voor jouw inspanningen: ik weet uit ervaring hoeveel tijd er steekt in het zoeken naar een oplossing van een gesteld probleem.

Link naar reactie
Delen op andere sites

Gast
Dit topic is nu gesloten voor nieuwe reacties.
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.