匹配字符串中的所有数字,包括科学计数法、小数、分数和负数。
const str = '这是一篇文章:加快递费3.22X10^5,就开始的经费3673降低
开jvjsldfjXDJKFLD发洛索洛芬2/3,是杜绝浪费0.12345,晋升的了客服-2344'
// ['3.22X10^5',3673,'2/3',0.12345,-2344]
分析:
对于数字,包含正数和负数 ;
-、/、X、^、. 后必须有数字;
/、X、^、. 前必须有数字;
实现:
const str = '这是一篇文章:加快递费3.22X10^5,就开始的经费3673降低开jvjsldfjXDJKFLD发洛索洛芬2/3,是杜绝浪费0.12345,晋升的了客服-2344'
let test = /-?((\d+([/]?|\.?\d+X?\d+\^|\.?)\d+)|\d+)/g
console.log(str.match(test))
//匹配结果:['3.22X10^5', '3673', '2/3', '0.12345', '-2344']
// -? :控制负号
// \d+:负号后1或多个数字
// [/]?:0或1个除号/
// \.?\d+X?\d+\^:0或1个小数点 + 数字 + 0或1个X + 数字 +^
// \.? : 0或1个小数点
//(a|b): 或。满足一个即可
// 注意:匹配除号时,需放到[]中,即[/]
// 通过/-?((一堆)|\d+): 我们考虑了只有一位数字的情况。
注意:匹配除号时,需放到[]中,即[/]