用于去除除科学记数法以外的所有非数字字符的正则表达式
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';
}
清洁编号('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;
}
清洁数字2('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
清理到123.45e+5
是一回事。 如果用户输入123.45e+5678.9e+10
,尝试清理它完全是另一回事。 在某些时候,有一两个以上的流浪角色,就像在$1,234.56
中一样,很难说出你甚至想找回什么。
相关文章:
- 不同浏览器中的空白字符正则表达式行为
- 正好包含2个大写字母和3个数字的正则表达式
- 用于获取两个方括号之间的数字的正则表达式
- 印地语数字的正则表达式是什么
- 某些数字的正则表达式
- 一系列数字的正则表达式
- 字母数字 JavaScript 正则表达式失败
- 波斯数字的正则表达式
- 用于返回括号内带有浮点数的数字的正则表达式
- 所有数字的正则表达式,但没有零
- 带逗号和数字的正则表达式
- JS中数字的正则表达式
- 用于检查至少一个字母或数字的正则表达式
- 任何双精度类型数字的正则表达式
- JavaScript中数字的正则表达式
- 不超过两个重复字母/数字的正则表达式
- 唯一数字的正则表达式
- 仅用于数字的正则表达式(没有空格或特殊字符),使用ng-pattern
- 最小8个字符和至少1个数字的正则表达式
- 在JavaScript中验证连续字符或数字的正则表达式