我正在使用此正则表达式来允许浮点数
str.replace(/(\.\d\d)\d+|([\d.]*)[^\d.]/, '$1$2')
我还需要允许负数。任何想法。
这允许123.45并且它不允许像123.45a这样的字符。我需要允许-123.45。目前它不允许我输入负数
答案 0 :(得分:2)
这是一个匹配负浮点数的较短正则表达式:
/^-?[0-9]\d*(\.\d+)?$/
Explaination and demo of this regex
如果您想明确匹配+123.123
等正数以及负数,请使用以下正则表达式:
/^[-+]?[0-9]\d*(\.\d+)?$/
答案 1 :(得分:0)
答案 2 :(得分:0)
你可以试试这个Regex:
parseFloat(str.replace(/.*?(\-?)(\d*\.\d+)[^\d\.]*/, '$1$2'));
但最好匹配数字而不是替换其他字符:
var matches = /(\-?\d*\.(?:\d+)?)/.exec(str);
if (typeof matches != 'undefined' && matches.length > 0) {
var num = parseFloat(matches[1]);
}
答案 3 :(得分:0)
答案 4 :(得分:0)
尝试以下方法,
str.replace(/-?[0-9]+(\.[0-9]+)?/g,'')
OR
str.match(/^-?[0-9]+(?:\.[0-9]+)?$/,'')