Reputation: 103
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
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
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