开发者

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;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜