当前位置: 首页 > article >正文

js正则:input 输入限制

这里写自定义目录标题

  • 正则:input 输入限制(IP和数值类型规则限制输入)
  • 核心方法 input 输入框的 oninput 监听事件
    • 1、IP输入检验及限制
    • 2、数值(含负数、保留两位)输入检验及限制

正则:input 输入限制(IP和数值类型规则限制输入)

有些情况下,需求要求我们在form表单输入就立即做出相应的限制,而非输入完成后再做检验。因此,这时候就需要用到一边输入一边匹配规则的限制了。

核心方法 input 输入框的 oninput 监听事件

1、IP输入检验及限制

上代码:

<template>
	<div>
		<input 
			maxlenght="15"
			placeholder="IP输入限制"
			oninput="value=value.replace(/[^\d.]/g,'')
			.replace(/\.{2,}/g,'.')
			.replace(/^0(\d)$/g,'$1')
			.replace(/\.0\d$/g,'.$1')
			.replace(/[3-9]\d\d|2[6-9]\d|25[6-9]|\d{4,}/g,'255')
			.replace(/^(\d{1,3}\.)(\d{1,3}\.)(\d{1,3}\.)(\d{1,3})/,'$1$2$3$4')
			"
		></input>
	</div>
</template>
// 注
replace(/[^\d.]/g,'') // 限制输入仅为数字和点
replace(/\.{2,}/g,'.') // 限制输入点不能连续输入超过2个
replace(/^0(\d)$/g,'$1') // 限制0为开头时,不能再输入0且01将替换为1
replace(/\.0\d$/g,'.$1') // 限制点后面的0为开头时,不能再输入0且01将替换为1
replace(/[3-9]\d\d|2[6-9]\d|25[6-9]|\d{4,}/g,'255') // 限制输入超过255时,替换为255
replace(/^(\d{1,3}\.)(\d{1,3}\.)(\d{1,3}\.)(\d{1,3})/,'$1$2$3$4') // 限制IP输入超过0.0.0.0格式后,无法再继续输入,比如错误格式 0.1.2.3.4

以上就能完美限制IP输入格式

2、数值(含负数、保留两位)输入检验及限制

<template>
	<div>
		<input 
			maxlenght="15"
			placeholder="数值(含负数、保留两位)输入限制"
			oninput="value=value.replace(/[^\d.-]/g,'')
			.replace(/(\d)-/g,'$1')
			.replace(/^-\.$/g,'-0.')
			.replace(/^-0+(\d)$/g,'-$1')
			.replace(/^\./g,'0.')
			.replace(/^0+(\d)$/g,'$1')
			.match(/^-?\d*(\.?\d{0,2})/g)
			"
		></input>
	</div>
</template>
// 注
replace(/[^\d.-]/g,'') // 限制输入仅为数字、点和负号
replace(/(\d)-/g,'$1') // 限制输入数字后不可输入负号-
replace(/^-\.$/g,'-0.') // 限制-和.一起时,替换为-0.开头的数值
replace(/^-0+(\d)$/g,'-$1') // 限制-和0为开头时,替换为-01为-1
replace(/^\./g,'0.') // 限制点.为开头时,替换为0.开头的数值
replace(/^0+(\d)$/g,'$1') //限制0为开头时,不能再输入0且01将替换为1
match(/^-?\d*(\.?\d{0,2})/g) // 最后校验是否满足数字格式

以上就能完美限制数值输入格式了!
当然,这个还是需要做最后的 isNaN()判断,因为可能存在0.或-0.这样悬停的输入状态!


http://www.kler.cn/a/933.html

相关文章:

  • 浅谈云计算12 | KVM虚拟化技术
  • 项目概述、开发环境搭建(day01)
  • 初识JVM HotSopt 的发展历程
  • 【Elasticsearch复合查询】
  • 【TI毫米波雷达】DCA1000不使用mmWave Studio的数据采集方法,以及自动化实时数据采集
  • 【ROS2】☆ launch之Python
  • 关于类型转换
  • CSS实现一个展示框
  • RabbitMQ Java开发教程(二)—官方原版
  • leetcode——27.移除元素
  • 【链表OJ题(六)】链表分割
  • 单调栈图文详解(附Java模板)
  • 【js逆向】hook大全
  • 线程池的使用:如何写出高效的多线程程序?
  • SPI读写SD卡速度有多快?
  • 「SAP ABAP」OPEN SQL(四)【FROM语句】
  • HTTP 协议
  • 体验攻略 | Persona VS. Profile,谁才是研究用户的最佳工具?
  • 手把手教你使用vue创建第一个vis.js
  • 【C++】list的使用 | 模拟实现
  • 5 全面认识java的控制流程
  • 系统集成项目管理工程师:第18章项目风险管理学习笔记
  • 4.类的基本概念
  • 【java】Java并发编程系列-基础知识(非常详细哦)
  • 【Python】正则表达式re库
  • JDBC指南