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

2024-03-05 16:14:49 浏览数 (3)

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

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

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

① 前端页面部分

代码语言:javascript复制
<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>

② validate.ts 验证部分

代码语言:javascript复制
// 输入验证:大于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的数'))
    }
  }
}
3、整数、小数、实数、整数、负数等的输入验证规则如下,只需要更新validate.ts和前端页面import { checkInputPositiveRealNum } from '@/utils/validate' // 验证的部分

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

代码语言:javascript复制
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的正数'))
    }
  }
}

② 验证正整数 正小数

代码语言:javascript复制
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的正实数'))
    }
  }
}

③ 验证正整数 0

代码语言:javascript复制
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的正整数'))
    }
  }
}

④ 验证正整数

代码语言:javascript复制
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的正整数'))
    }
  }
}

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

代码语言:javascript复制
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位'))
    }
  }
}
若本文有帮助到阅读本文的同学,欢迎点赞、关注、收藏,互相学习交流。

1 人点赞