如何封装一个开发人员可自定义保留小数点后几位的正则表达式

发布于 2022-09-11 23:14:33 字数 525 浏览 18 评论 0

有个需求 就是基于element ,封装一个开发人员可以自定义保留几位小数的正则表达式
不知道咋写,如果有知道的大佬,希望能帮下忙,最好是能贴出代码哈~感激不尽!

这是我目前封装的手机号的正则表达式

var phone = (rule, value, callback) => {
  let regFormat = /^[1][3578][0-9]{9}$/;
  if (!value) {
    return callback(new Error('手机号不能为空'));
  }
  if (!(regFormat.test(value))) {
    callback(new Error('请输入正确手机号'));
  }

调用:

  rules: {
    phone: [{
        required: true,
        validator: phone,
    }],

能够按照这种格式封装开发人员可自定义保留小数点后几位的正则表达式吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

情释 2022-09-18 23:14:33

保留小数点这种事用正则??效率多低啊。

@FX052 写的是用来判断小数点位数是否满足指定位数、而非将指定数字格式化成特定小数点位数。

这玩意儿写个扩展就好了:

/**
 * 使用去尾法来格式化一个数。
 * @param {Number} len 保留小数位数。
 * @returns {Number}
 */
Number.prototype.toFloor = function (len) {
    return Math.floor(this * Math.pow(10, len)) / Math.pow(10, len);
};

/**
 * 使用进一法来格式化一个数。
 * @param {Number} len 保留小数位数。
 * @returns {Number}
 */
Number.prototype.toCeil = function (len) {
    return Math.ceil(this * Math.pow(10, len)) / Math.pow(10, len);
};

/**
 * 使用四舍五入法法来格式化一个数。
 * @param {Number} len 保留小数位数。
 * @returns {Number}
 */
Number.prototype.toRound = function (len) {
    return Math.round(this * Math.pow(10, len)) / Math.pow(10, len);
};

用的时候直接:

let i = Math.PI;
console.log(i.toRound(4)); // 四舍五入保留4位小数

不想破坏原型链就抽出来自己做封装。

https://github.com/fudiwei/sk...


评论区 @君迹我心 提到了 Number.prototype.toFixed,这是 ES 中自带的原型方法,是一种基于银行家舍入规则的保留小数位法,跟数学意义上的四舍五入不太一样。具体含义可自行百度。

梦行七里 2022-09-18 23:14:33

保留小数点位数为什么要正则啊?

扛起拖把扫天下 2022-09-18 23:14:33
// 小数位数最少min位  最多max位
const reg = (min,max)=>new RegExp('^\\d+\\.\\d{'+ min +','+max +'}

正则细节还可以按需求自己调整

) reg(1,5).test('1.12345') // true

正则细节还可以按需求自己调整

不醒的梦 2022-09-18 23:14:33
const f = (val, dig) => Number(val).toFixed(dig); // 会四舍五入
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文