使用jQuery / JS中的regex从价格格式的字符串中提取浮点数

时间:2017-11-16 01:29:06

标签: javascript jquery regex replace

到那里的所有JS正则表达式大师那里。我正在构建一个函数,它将从字符串中删除$,空格,逗号,[A-Z],[a-z],只留下float(如果它存在于给定的字符串中),就像这样:

var result = myFunction( 'USD $12, 345.95'); //result = 12345.95
var result = myFunction( 'ten dollars US' ); // result = false

function myFunction( weirdString ){

    // some code

}

我知道我可以做类似的事(如果我错了,请原谅我):

weirdString.replace(/[&$<>"'`=\/\s]|[A-Z]|[a-z]/g, '');
isNaN( weirdString ) ? return false : return weirdString;

但是正确的方法是什么?

2 个答案:

答案 0 :(得分:1)

除了将您不想要允许的每个角色列入黑名单外,您还可以将所需的角色列入白名单:

[^\d.]  // match anything that isn't a digit or period

这样做的好处是你不必考虑拒绝所有可能的角色。例如,如果由于某种原因,字符é(带有重音的e)出现在您的字符串中,您使用的正则表达式会将其视为浮点数的一部分,您可能不会这样做想。

在此测试:https://regex101.com/r/g8zBRP/2

答案 1 :(得分:0)

所以这就是我提出的功能:

function extractFloatFromString( input ){

    var result = input.match( /[\d+.]/g );
    return result == null ? 0 : result.join('');

}

https://jsfiddle.net/7hq1dcwn/3/