Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Removing everything except numbers in a string

I've made a small calculator in javascript where users enter the interest rate and amount the they want to borrow, and it calculates how much of an incentive they might get.

The problem is that I'm worried users will enter symbols, e.g.

Loan amount: £360,000 - Interest Rate: 4.6%

I'm not worried about the decimal places as these are needed and don't seem to affect the calculation, it's the symbols like £ and % which mess things up.

Is there a simple way to strip out these symbols from the code:

<td><input type="text" name="loan_amt" style="background-color:#FFF380;"></td>
<td><input type="text" name="interest_rate" style="background-color:#FFF380;"></td>


function Calculate()
{
    var loan_amt = document.getElementById('loan_amt').value;
    //this is how i get the loan amount entered
    var interest_rate = document.getElementById('interest_rate').value; 
    //this is how i get the interest rate

    alert (interest_rate);
}
like image 858
Reindeer Avatar asked Aug 07 '13 09:08

Reindeer


People also ask

How do you remove all but numbers from a string in Java?

You can make use of the ^ . It considers everything apart from what you have infront of it. String value = string. replaceAll("[^0-9]","");

How do I remove a character from a number string?

Using 'str. replace() , we can replace a specific character. If we want to remove that specific character, replace that character with an empty string. The str. replace() method will replace all occurrences of the specific character mentioned.


2 Answers

Note that you should use the correct DOM id to refer via getElementById. You can use the .replace() method for that:

var loan_amt = document.getElementById('loan_amt');
loan_amt.value = loan_amt.value.replace(/[^0-9]/g, '');

But that will remove float point delimiter too. This is an answer to your question, but not a solution for your problem. To parse the user input as a number, you can use parseFloat() - I think that it will be more appropriate.

like image 190
Alma Do Avatar answered Oct 17 '22 14:10

Alma Do


This is the shortest:

replace(/\D/g,'');
like image 41
Pinonirvana Avatar answered Oct 17 '22 16:10

Pinonirvana