如何从段落文本中正确提取float浮点数 解决9.5被识别为95的问题
问题原因
你使用的正则/[^0-9]/gi会把所有非数字的字符全部清除,目标数值9.5中的小数点.也会被删掉,处理后得到的字符串是95,转换为浮点数后自然得到错误结果。
解决方案
调整正则规则,把小数点也加入保留范围即可,修改后的代码如下:
$('p.text-decoration').on('click',function(){ // 正则调整为保留数字和小数点 var getTxtNum = $(this).text().replace(/[^0-9.]/g, '') var getFloatNum = parseFloat(getTxtNum) $('input.items_number').val(getFloatNum) console.log('test'+getFloatNum) })
修改后点击段落,输入框就会正确填入9.5。
如果你的使用场景中可能出现多个小数点的异常情况,还可以额外加一层格式校验,避免解析出错:
$('p.text-decoration').on('click',function(){ var getTxtNum = $(this).text().replace(/[^0-9.]/g, '') // 匹配仅包含一个小数点的合法浮点数格式 var matchRes = getTxtNum.match(/\d+\.\d+/) var getFloatNum = matchRes ? parseFloat(matchRes[0]) : 0 $('input.items_number').val(getFloatNum) console.log('test'+getFloatNum) })
内容的提问来源于stack exchange,提问作者Solaiman Hossain
相关产品推荐
相关产品推荐

