antd 输入框带小数点儿的数字范围校验

1、需求:广州经纬度的输入框,校验输入是否在某个范围内(广州经度112.57-114.3;纬度22.26-23.56),如图:

在这里插入图片描述

2、长度和小数点儿做了限制,数字范围在html加上的
html:
<a-form-item
  label="测站经度:"
  :labelCol="{ span: 8 }"
  :wrapperCol="{ span: 16 }"
>
  <a-input
    :maxLength="7"
    @input="getLongitude"
    v-decorator="['longitude', {
      rules: [
        {
          required: true,
          pattern: /^1[1][2-4](\.[0-9]{0,4})?$/,
          message: '请输入112.57-114.3区间的测站经度',
        },
      ],
    }]"
    placeholder="请输入112.57-114.3区间的测站经度"
  />
</a-form-item>

js:
// 经纬度限制(输入的限制)
getLongitude(obj) {
  obj.target.value = obj.target.value.replace(/[^\d.]/g, "");
  obj.target.value = obj.target.value.replace(/^\./g, "");
  obj.target.value = obj.target.value
    .replace(".", "$#$")
    .replace(/\./g, "")
    .replace("$#$", ".");
  // 赋值
  this.form.setFieldsValue({
    longitude: obj.target.value,
  });
},
3、解释pattern中的正则
 /^1[1][2-4](\.[0-9]{0,4})?$/
^开始符,$结束符
三位数 100~199 : 1[0-9][0-9]
\.[0-9]: 小数点后面的数
{0,4}: 最多4位小数点
?: 这个问号的意思就是小数点可有可无
4、有尝试过连后面的小数点也校验进去,但是想想可能不行或者说可能很复杂,因为有可能出现的情况很多,比如113.56、113.31这种情况,所以…(如果有大佬写出来不知可否教手把手教我)hahaha
5、需求变更,后面小数点不限制多少位
尝试:
pattern: /^1[1][2-4](\.[0-9])?$/
解决:
pattern: /^1[1][2-4](\.[0-9]{0,100})?$/

换位思考才是顶级智慧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值