el-input 输入验证 整数、小数、实数、整数、负数等

简介: el-input 输入验证 整数、小数、实数、整数、负数等

 1、关于前端页面代码和规则验证可以参照之前文章

el-input 限制只能输入正整数

2、本文主要阐述ts公共验证类结合rule的形式对输入值进行规则校验

① 前端页面部分

<template>
  <div class="container">
    <el-form
      ref="dialogForm"
      size="small"
      class="form"
      :model="dialogForm"
      :rules="rules"
    >
      <el-row :gutter="30">
        <el-col :span="12">
          <el-form-item
            label="金额"
            prop="moneyNum"
          >
            <el-input
              v-model="dialogForm.moneyNum"
              autocomplete="off"
              placeholder="请输入金额"
              clearable
            />
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </div>
</template>
<script lang="ts">
import { Vue } from 'vue-property-decorator'
import { Form } from 'element-ui'
import { checkInputPositiveRealNum } from '@/utils/validate' // 验证
export default class Edit extends Vue {
  @Prop() method!: any;
  private dialogForm = {
    moneyNum: ''
  }
  private rules = {
    moneyNum: [{ validator: checkInputPositiveRealNum, trigger: 'blur' }]
  };
  private handleClose() {
    this.$emit('close')
  }
}
</script>
<style lang="scss" scoped>
.container {
  padding: 0px 20px 0 20px;
  .form {
    max-height: 700px;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 30px;
  }
}
</style>

image.gif

② validate.ts 验证部分

// 输入验证:大于0的数
export const checkInputPositiveRealNum = (rule: any, value: string, callback: any) => {
  if (!value) {
    callback()
  } else {
    const regPositiveRealNum = /^(([1-9]\d*)|([0][.]{1}[0-9]{0,2}[1-9]+)|([1-9]\d*[.]{1}[0-9]+))$/g
    if (regPositiveRealNum.test(value)) {
      callback()
    } else {
      return callback(new Error('请输入大于0的数'))
    }
  }
}

image.gif

3、整数、小数、实数、整数、负数等的输入验证规则如下,只需要更新validate.ts和前端页面import { checkInputPositiveRealNum } from '@/utils/validate' // 验证的部分

① 验证正整数+正小数(包含0)

export const checkIsPositive = (rule, value, callback) => {
  if (!value) {
    callback()
  } else {
    const reg = /^\d+(?=\.{0,1}\d+$|$)/
    if (reg.test(value)) {
      callback()
    } else {
      callback(new Error('请输入大于等于0的正数'))
    }
  }
}

image.gif

② 验证正整数+正小数

export const checkIsPositiveEx0 = (rule, value, callback) => {
  if (!value) {
    callback()
  } else {
    /// ^(\d|[1-9]\d+)(\.\d{1,2})?$/          ---->2位小数
    const reg = /^(\d|[1-9]\d+)(\.\d+)?$/
    if (reg.test(value)) {
      if (value === '0') {
        callback(new Error('请输入大于0的正实数'))
      } else {
        callback()
      }
    } else {
      callback(new Error('请输入大于0的正实数'))
    }
  }
}

image.gif

③ 验证正整数+0

export const checkIsPositiveInteger = (rule, value, callback) => {
  if (!value) {
    callback()
  } else {
    const reg = /^(0|[1-9][0-9]*)$/
    if (reg.test(value)) {
      callback()
    } else {
      callback(new Error('请输入大于等于0的正整数'))
    }
  }
}

image.gif

④ 验证正整数

export const checkIsPositiveIntegerEx0 = (rule, value, callback) => {
  if (!value) {
    callback()
  } else {
    const reg = /^([1-9][0-9]*)$/
    if (reg.test(value)) {
      callback()
    } else {
      callback(new Error('请输入大于0的正整数'))
    }
  }
}

image.gif

⑤ 特殊要求举例(包括小数位数、输入整数和小数位数的长度等)

export const checkIsPositiveInteger123 = (rule, value, callback) => {
  if (!value) {
    callback()
  } else {
    const reg = /^[1-9]\d{0,11}(\.\d{1,4})?$|^0(\.\d{1,4})?$/
    if (reg.test(value)) {
      callback()
    } else {
      callback(new Error('请输入正确格式数字,整数位不能超过12位,小数位不能超过4位'))
    }
  }
}

image.gif

4、参考资料

① js正则表达式,自己写个真正好用的大于0的数字包括小数,排除0.0等实际等于0的小数

② js 大于等于0的正数和正整数

③ 正则:必须是正整数或小数,小数点后保留3位,输入整数不超过12位

若本文有帮助到阅读本文的同学,欢迎点赞、关注、收藏,互相学习交流。

目录
相关文章
|
1月前
两个整数相加
【10月更文挑战第12天】两个整数相加
19 5
|
1月前
输出浮点数
【10月更文挑战第12天】输出浮点数。
11 4
|
1月前
取一个整数a从右端开始的 4~7 位
取一个整数a从右端开始的 4~7 位。
21 7
|
2月前
比较三个整数大小
比较三个整数大小
55 13
|
2月前
|
存储 编译器 C语言
取一个整数a从右端开始的4~7位。
取一个整数a从右端开始的4~7位。
27 1
|
6月前
63.取一个整数a从右端开始的4~7位。
63.取一个整数a从右端开始的4~7位。
34 0
|
5月前
取一个整数 a 从右端开始的 4~7 位
【6月更文挑战第23天】取一个整数 a 从右端开始的 4~7 位。
43 9
|
6月前
求两个整数之和
两幅图片展示,无文字描述。第一张图片链接:`https://ucc.alicdn.com/pic/developer-ecology/jsj5v54nhc5lk_9a19903e665642b388dedfa69ba6dd98.jpg`,第二张图片链接:`https://ucc.alicdn.com/pic/developer-ecology/jsj5v54nhc5lk_9698cabf5d2f4ce38f6ea21a4ee8430e.jpg`。
33 0
wustojc1006求2个整数的和
wustojc1006求2个整数的和
39 0
|
C语言
已知一个整数,如何判断这个整数是无符号的?
已知一个整数,如何判断这个整数是无符号的?
94 0