Zone Duo
Zone Duo

Reputation: 103

javascript regular expression to maximum of 12 decimal places and 2 floating places

I need to validate a number only using a regular expression to allow the only maximum of 12 decimal places and a maximum of 2 floating places. Here floating points are optional as well. I have already an expression as below to validate some other conditions.

onkeyup="this.value=this.value.replace(/[^\.\d]/g,'');"

I need to modify the above expression to validate my new requirement too. My attempt as below.

onkeyup="this.value=this.value.replace(/[^\.\d{1,12}{0,2}]/g,'');"

But it was not working. Sorry I have a little knowledge about regular expression. So can anyone help me to build this one to correct?

Upvotes: 0

Views: 39

Answers (2)

Leonid
Leonid

Reputation: 804

const regex = /^\d{1,12}(\.\d{1,2})?$/;
console.log('1234567890123.12', regex.test('1234567890123.12'));
console.log('123456789012.12', regex.test('123456789012.12'));
console.log('123456789012.1', regex.test('123456789012.1'));
console.log('123456789012.', regex.test('123456789012.'));
console.log('123456789012', regex.test('123456789012'));
console.log('12345678901', regex.test('12345678901'));
console.log('1234567890', regex.test('1234567890'));
console.log('123456789', regex.test('123456789'));
console.log('12345678', regex.test('12345678'));
console.log('1', regex.test('1'));

Upvotes: 1

Guerric P
Guerric P

Reputation: 31815

This is probably the regex you're looking for:

const regex = /^\d{1,12}(?:\.\d{1,2})?$/;
console.log('123456789012.123', regex.test('123456789012.123'));
console.log('123456789012.12', regex.test('123456789012.12'));
console.log('123456789012.1', regex.test('123456789012.1'));
console.log('123456789012.', regex.test('123456789012.'));
console.log('123456789012', regex.test('123456789012'));
console.log('12345678901', regex.test('12345678901'));

Upvotes: 2

Related Questions