Regex to replace everything except numbers and a decimal point
I have a text field that needs to remain only text or decimal. Here is the code that 开发者_StackOverflowI'm currently using to replace everything except numbers and a decimal point. Issue is, I can't figure out a regex that will identify everything else
document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");
The \D works fine, but I've tried (?!.), (?!\.), [^.], [^\.]
and so on...
Any suggestions for a regular expression that identifies positively with anything except a number or a decimal?
Thanks for the help
Use this:
document.getElementById(target).value = newVal.replace(/[^0-9.]/g, '');
Removing only decimal part can be done as follows:
number.replace(/(\.\d+)+/,'');
This would convert 13.6667px into 13px (leaving units px untouched).
Try this:
document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");
Regular expression syntax cheatsheet
Go MDN
const str1 = 'hello 123 !@#$%^WORLD?.456_';
const str2 = '৳ $ 20,500.00';
console.log(str1.replace(/[^\d.]/g, "")); //123.456
console.log(str2.replace(/[^\d.]/g, "")); //20500.00
Check the link Regular Expression Demo
use the below reg exp
[a-z] + [^0-9\s.]+|\.(?!\d)
Using replace and search to force a decimal number
(text: string )=>{
const index = text.search(/(\.)/);
if (index != text.length -1) {
let str = text.substring(0, index+1);
let end = text.substring(index).replace(/[^0-9]/g, '');
text = str + end;
}
return text;
}
精彩评论