[英]How to match all the non numeric characters except a plus symbol using regular expression?
[英]Regular expression to strip all non numeric characters except scientific notation
我正在寻找一种方法来清除Javascript中的数字,剥离所有非数字字符,除非它会破坏科学记数法。 例如,我正在寻找以下输出...
123.45
=> 123.45
1a23.45
=> 123.45
1a23.4re5
=> 123.45
*(@#123.45jkd
=> 123.45
7.71234e+1
=> 7.71234e+1
我很乐意分开.
首先,如果需要,将数字作为2个不同的部分处理。
您可以返回任何评估为数字的字符串,
并清理那些没有的。
function cleanNumber(num){
var N= Number(num);
if(parseFloat(num)=== N) return num;
return num.replace(/\D+/g, '') || '0';
}
cleanNumber( '7.71234e + 1')
(字符串)7.71234e + 1
或者您可以将字符串转换为数字并返回一个数字 -
function cleanNumber2(num){
var N= Number(num);
if(parseFloat(num)=== N) return N;
return Number(num.replace(/\D+/g, '')) || 0;
}
cleanNumber2( '7.71234e + 1');
(编号)77.1234
您可以尝试此搜索/替换:
pattern: /([0-9]e[-+][0-9])|[^-+0-9.]/gi
replacement: $1
例:
var result = yourNbr.replace(/(\de[-+]\d)|[^-+0-9.]/gi, '$1');
试试这个:
var dirty_text = '*(@#123.45jkd';
var clean_text = dirty_text.replace(/(?![+-]?\d*\.?\d+|e[+-]\d+)[^0-9]/g,'');
这是每个示例的一个有效的jsFiddle示例。
请注意,任何像这样的字符串清理程序都可能遇到很多问题,除非它在每次按键后运行。 例如,将x123.45e+5
清理为x123.45e+5
123.45e+5
。 如果用户输入123.45e+5678.9e+10
,则完全尝试清理它是另一回事。 在某些时候,有超过一个或两个流浪角色,比如$1,234.56
,很难说你甚至想要回来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.