正则表达式 整数最多10位,小数最多4位(input框数字验证报错问题)

文章详细解读了身份证号码的正则验证规则以及一个用于验证整数和小数的正则表达式,讨论了在前端表单验证中遇到的问题,如输入类型转换,以及如何确保与后端数据类型的匹配。同时,提供了Vue.js中el-form-item组件的验证规则配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

附上身份证号正则验证
/^(\d{6})(19|20)(\d{2})(0[1-9]|1[0-2])([0-2][1-9]|10|20|30|31)(\d{3})(\d|[Xx])$/

{ pattern: '^[1-9]\\d{0,9}(\\.\\d{1,4})?$|^0(\\.\\d{1,4})?$', message: '整数长度最多9位,小数点最多四位', trigger: 'blur' }

解析一下 方便我自己以后变换, 第一个1-9是整数的每一位数的大小是1-9,
第二个是数的长度0-9即长度为10, 1,4是可以输入1到4位小数为什么写两次暂时没搞明白

示例 :
整数长度最多1位可从0开始,小数点最多四位

{ pattern: '^[0-9]\\d{0}(\\.\\d{1,4})?$|^0(\\.\\d{1,4})?$', message: '整数长度最多1位,小数点最多四位', trigger: 'blur' }

应该是对的

第二个 input框验证整数及小数,由于后端返回的是number类型,input框输入的又是字符串类型,(加了type打印出来是number类型但是我正则验证还是会报错)
解决方法 统一验证格式在验证后面加transform: (value) => String(value) ,也可以改成验证其他格式的。
ps: 我改成数字输入框 拿到的是number类型了 然后把transform: (value) => String(value)改成transform: (value) => Number(value) 正则还是会过不到验证 。

 <el-row :gutter="20">
                    <el-col :span="12" class="text-center">
                        <el-form-item label="产品生产能力(吨)" prop="capacity">
                            <el-input     v-model="form.capacity" clearable placeholder="请输入" />
                            <!-- <el-input-number  v-model="form.capacity" :controls='false' placeholder="请输入" /> -->
                        </el-form-item>
                    </el-col>
                    <el-col :span="12" class="text-center">
                        <el-form-item label="产品生产能力气体(方)" prop="capacityGas">
                            <el-input   v-model="form.capacityGas" placeholder="请输入" />
                            <!-- <el-input-number v-model="form.capacityGas" :controls='false' placeholder="请输入" /> -->
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row :gutter="20">
                    <el-col :span="12" class="text-center">
                        <el-form-item label="产品最大储量(吨)" prop="reserve">
                            <el-input v-model="form.reserve"  clearable placeholder="请输入" />
                            <!-- <el-input-number v-model="form.reserve" :controls='false' placeholder="请输入" /> -->
                        </el-form-item>
                    </el-col>
                    <el-col :span="12" class="text-center">
                        <el-form-item label="产品最大储量气体(方)" prop="reserveGas">
                            <el-input v-model="form.reserveGas" placeholder="请输入" />
                            <!-- <el-input-number v-model="form.reserveGas" :controls='false' placeholder="请输入" /> -->
                        </el-form-item>
                    </el-col>
                </el-row>
 const rules = reactive({
        capacity: [ {  pattern: '^[1-9]\\d{0,11}(\\.\\d{1,2})?$|^0(\\.\\d{1,2})?$', message: '整数最多12位小数2位', trigger: 'blur', transform: (value) => String(value)  }],
        capacityGas: [{ pattern: '^[1-9]\\d{0,11}(\\.\\d{1,2})?$|^0(\\.\\d{1,2})?$', message: '整数最多12位小数2位', trigger: 'blur', transform: (value) => String(value) }],
        reserve: [{ pattern: '^[1-9]\\d{0,11}(\\.\\d{1,2})?$|^0(\\.\\d{1,2})?$', message: '整数最多12位小数2位', trigger: 'blur', transform: (value) => String(value) }],
        reserveGas: [{ pattern: '^[1-9]\\d{0,11}(\\.\\d{1,2})?$|^0(\\.\\d{1,2})?$', message: '整数最多12位小数2位', trigger: 'blur', transform: (value) => String(value) }],
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值