Javascript正则表达式允许负数

时间:2015-02-18 07:32:09

标签: javascript regex

我正在使用此正则表达式来允许浮点数

str.replace(/(\.\d\d)\d+|([\d.]*)[^\d.]/, '$1$2')

我还需要允许负数。任何想法。

这允许123.45并且它不允许像123.45a这样的字符。我需要允许-123.45。目前它不允许我输入负数

5 个答案:

答案 0 :(得分:2)

这是一个匹配负浮点数的较短正则表达式:

/^-?[0-9]\d*(\.\d+)?$/

Explaination and demo of this regex

如果您想明确匹配+123.123等正数以及负数,请使用以下正则表达式:

/^[-+]?[0-9]\d*(\.\d+)?$/

Source

答案 1 :(得分:0)

使用此正则表达式:

(?!=\A|\s)(-|)[\d^]*\.[\d]*(?=\s|\z)

它将匹配所有浮点数。演示:https://regex101.com/r/lE3gV5/2

答案 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)

您可以尝试使用regexp:

/-?(\d+\.\d+)[^\w\.]/g

DEMO

答案 4 :(得分:0)

尝试以下方法,

str.replace(/-?[0-9]+(\.[0-9]+)?/g,'')

                 OR 

str.match(/^-?[0-9]+(?:\.[0-9]+)?$/,'')
相关问题