到那里的所有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;
但是正确的方法是什么?
答案 0 :(得分:1)
除了将您不想要允许的每个角色列入黑名单外,您还可以将所需的角色列入白名单:
[^\d.] // match anything that isn't a digit or period
这样做的好处是你不必考虑拒绝所有可能的角色。例如,如果由于某种原因,字符é
(带有重音的e)出现在您的字符串中,您使用的正则表达式会将其视为浮点数的一部分,您可能不会这样做想。
答案 1 :(得分:0)
所以这就是我提出的功能:
function extractFloatFromString( input ){
var result = input.match( /[\d+.]/g );
return result == null ? 0 : result.join('');
}