一、常见的正则表达式
replace(/[^\d.]/g, ''); // 清除"数字"和"."以外的字符
replace(/^./g, ''); // 不能为"."开头
二、正则表达式理解
1、replace()的$1,$2
正则表达式模式使用括号,将导致相应的子匹配被记住。$1,$2表示第一个和第二个括号的子字符串匹配
// $1表示第一个(\w+),是"John"。$2表示第二个(\w+),是"Smith"
'John Smith'.replace(/(\w+)\s(\w+)/, '$2, $1');
replace(/^(\\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); // 保留两位
// $1表示(\\-),是"-"。$2表示(\d+),是0次或多次数字。$3表示(\d\d),是两位数字
^:匹配字符串的开头
(\\-)*:匹配零个或多个减号(表示负数)
(\d+):匹配一个或多个数字(整数部分)
\.:匹配小数点
(\d\d):匹配两位数字(小数部分,只保留两位小数)
.*$:匹配任意字符直到字符串的结尾
replace(/^(\\-)*(\d+)\.(\d\d\d).*$/, '$1$2.$3'); // 保留三位(保留多少位就加多少个\d)
// $1表示(\\-),是"-"。$2表示(\d+),是0次或多次数字。$3表示(\d\d\d),是三位数字
(\d\d\d):匹配三位数字(小数部分,只保留三位小数)
const decimalPattern = `(\\d+\\.\\d{${decimalPlaces}}).*`;
const regex = new RegExp(`^(\\-)*${decimalPattern}$`);
number.replace(regex, '$1$2')
// $1表示(\\-),是"-"。$2表示(\\d+\\.\\d{${decimalPlaces}}),是数字+"."+decimalPlaces位数字