// 校验输入的数字是一个合法有效的数字
export function setValue(e) {return e.replace(/[^0-9.]/g, "") // 移除非法字符 .replace(/^0+/, "0").replace(/^0+(\d+|\.$)/, "0$1") // 只保留一个开头的零(如果存在),并处理以零开头且后面可能跟着点的情况 .replace(/\.{2,}/g, ".")// 确保只有一个小数点(虽然在这个逻辑下可能是多余的,因为前面的处理已经避免了多个点) .replace(/\./g, function (match, index, string) {return index === string.indexOf(".") ? "." : "";}).replace(/^0+(?=\d)/, "")|| ""; // 如果结果为空字符串,则返回"0"
}
在组件或页面中使用
<el-input :formatter="(value) =>`¥ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')" :parser="(value) => setValue(value)" v-model="scope.row.list_price"@blur="changePrice(item, scope.$index, 'list_price')" size="small"></el-input>