js正则表达式限制输入

验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0) ^\d+$
验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?$

用js控制输入框input数字、汉字、字符  

1.文本框只能输入数字代码(小数点也不能输入)
<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
2.只能输入数字,能输小数点.
<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
<input name=txt1 onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}">
3.数字和小数点方法二
<input type=text t_value="" o_value="" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}">
4.只能输入字母和汉字
<input onkeyup="value=value.replace(/[\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))" maxlength=10 name="Numbers">
5.只能输入英文字母和数字,不能输入中文
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')">
6.只能输入数字和英文<font color="Red">chun</font>
<input onKeyUp="value=value.replace(/[^\d|chun]/g,'')">
7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:
<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">
8.小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:
<input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')">
只能是数字和小数点和加减乘際
onkeypress="return event.keyCode>=4&&event.keyCode<=57"

 


××××××××××××××××××××××××××××××××××××××
以下未经测试,请验证后使用
1.只能输入数字和英文的:
<input onkeyup="value=value.replace(/[\W]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" ID="Text1" NAME="Text1">
2.只能输入数字的:
<input onkeyup="value=value.replace(/[^\d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" ID="Text2" NAME="Text2">
3.只能输入全角的:
<input onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))" ID="Text3" NAME="Text3">
4.只能输入汉字的:
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" ID="Text4" NAME="Text4">
5.邮件地址验证:
var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|NET|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT)$"
var re = new RegExp(regu);
if (s.search(re) != -1) {
return true;
} else {
window.alert ("请输入有效合法的E-mail地址 !")
return false;
}
6.身份证:
"^\\d{17}(\\d|x)$"
7.17种正则表达式

/^[a-zA-Z0-9\u4e00-\u9fa5]+$/  数字文字字母

"^\\d+$"  //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$"  //正整数
"^((-\\d+)|(0+))$"  //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$"  //负整数
"^-?\\d+$"    //整数
"^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0)
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数
"^(-?\\d+)(\\.\\d+)?$"  //浮点数
"^[A-Za-z]+$"  //由26个英文字母组成的字符串
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串
"^[a-z]+$"  //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串
"^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url
=============================================
1.取消按钮按下时的虚线框
  在input里添加属性值 hideFocus 或者 HideFocus=true

2.只读文本框内容
在input里添加属性值 readonly
3.防止退后清空的TEXT文档(可把style内容做做为类引用)
  <INPUT style=behavior:url(#default#savehistory); type=text id=oPersistInput>
4.ENTER键可以让光标移到下一个输入框
  <input onkeydown="if(event.keyCode==13)event.keyCode=9" >
5.只能为中文(有闪动)
  <input onkeyup="value="/value.replace(/[" -~]/g,’’)" onkeydown="if(event.keyCode==13)event.keyCode=9">
6.只能为数字(有闪动)
  <input onkeyup="value="/value.replace(/["^\d]/g,’’) "onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\d]/g,’’))">
7.只能为数字(无闪动)
  <input ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9" onKeyPress="if ((event.keyCode<48 || event.keyCode>57)) event.returnValue=false">
8.只能输入英文和数字(有闪动)
  <input onkeyup="value="/value.replace(/[\W]/g,"’’)" onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\d]/g,’’))">
9.屏蔽输入法
  <input type="text" name="url" ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9">
10. 只能输入 数字,小数点,减号(-) 字符(无闪动)
  <input onKeyPress="if (event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false">
11. 只能输入两位小数,三位小数(有闪动)
  <input maxlength=9 onkeyup="if(value.match(/^\d{3}$/))value="/value.replace(value,parseInt(value/10))" ;value="/value.replace(/\.\d*\./g,’."’)" onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 && event.keyCode!=45 || value.match(/^\d{3}$/) || /\.\d{3}$/.test(value)) {event.returnValue=false}" id=text_kfxe name=text_kfxe>
"^\\d+$"  //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$"  //正整数
"^((-\\d+)|(0+))$"  //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$"  //负整数
"^-?\\d+$"    //整数
"^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0)
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数
"^(-?\\d+)(\\.\\d+)?$"  //浮点数
"^[A-Za-z]+$"  //由26个英文字母组成的字符串
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串
"^[a-z]+$"  //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串
"^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url
"^((\d{1,3}(,\d{3})*?)|\d+)(\.\d+)?$ //带逗号的decimal
具体的使用
<SCRIPT language=JavaScript>
var mm=/^\d+$/;
function formCheck()
{  
if(!mm.test(document.f1.PropertyAmount.value))
{
alert("请输入合法的数字");
document.f1.PropertyAmount.focus();
return false;
}
return true;
}

<think>好的,我现在需要帮用户解决使用正则表达式限制输入框只能输入数字和小数点的问题。用户之前在Vue3中遇到了el-dialog下拉框未正确展示的问题,现在转向另一个问题,关于输入验证的正则表达式。首先,我需要回顾用户提供的引用内容。引用[1]到[5]中提到了多种正则表达式的应用,比如限制小写字母、数字、下划线,处理数字、小数点和减号,以及限制小数点后数等。用户现在明确想找的是允许数字和小数点的正则表达式,可能还需要考虑小数点只能出现一次,不能出现在开头或结尾,以及负号的情况。 用户的问题可能包括:1.如何编写正则表达式,确保输入只能是数字和小数点? 2.如何处理多个小数点的情况,比如只允许一个? 3.是否需要允许负数(即包含减号)?4.如何在前端实现实时验证,比如在Vue中使用@input事件?根据引用中的例子,例如引用[2]提到允许数字、小数点和减号,引用[4]处理小数点后两。用户可能不需要减号,所以需要调整正则表达式。例如,使用^[0-9]*\.?[0-9]*$来匹配数字和单个小数点,但需要确保小数点不能出现在开头或结尾,或者允许如.5这样的形式,这取决于需求。另外,用户可能在Vue项目中实现,参考引用[3]和[5],可以使用@input事件配合正则替换。例如,在输入时替换非法字符,确保输入符合要求。同时,需要注意处理粘贴操作,可能需要添加@paste事件处理。 还需要考虑用户体验,比如当用户输入多个小数点时,自动替换为一个。或者在输入非法字符时,即时反馈。例如,使用replace方法将非数字和小数点的字符替换为空。 可能的问题点:-正则表达式是否正确处理所有情况,如开头的小数点、多个小数点。-如何绑定到Vue的输入框,确保响应式更新。 -是否需要允许负号,用户的问题中没有提到,可能需要确认,但根据问题描述,可能不需要。 接下来,整理解决方案,分步骤说明,给出正则表达式示例,并附上Vue的实现代码。同时,生成相关问题,帮助用户深入理解。</think>### 使用正则表达式限制输入框仅允许数字和小数点的方法 --- #### 一、基础正则表达式实现 ##### 1. **核心正则表达式** ```javascript /^[0-9]*\.?[0-9]*$/ // 允许数字和小数点,但需优化 ``` - **允许内容**:数字(`0-9`)、小数点(`.`) - **问题**:允许连续多个小数点(如`12.34.56`),需进一步约束 ##### 2. **优化版本(推荐)** ```javascript /^\d*\.?\d*$/.test(value) // 允许数字和最多一个小数点 ``` - 使用`\d`简化数字匹配 - 通过`\.?`限制小数点最多出现一次 --- #### 二、完整输入控制方案 ##### 1. **实时过滤非法字符** 在输入时通过`@input`事件处理非法输入: ```vue <template> <input type="text" :value="inputValue" @input="handleInput" @paste="handlePaste" > </template> <script setup> const inputValue = ref(&#39;&#39;); const handleInput = (e) => { // 过滤非数字和小数点 const filteredValue = e.target.value .replace(/[^\d.]/g, &#39;&#39;) // 删除非法字符 .replace(/(\..*)\./g, &#39;$1&#39;); // 禁止多个小数点 inputValue.value = filteredValue; }; const handlePaste = (e) => { e.preventDefault(); // 阻止默认粘贴行为 const pasteText = e.clipboardData.getData(&#39;text&#39;); const sanitized = pasteText.replace(/[^\d.]/g, &#39;&#39;); inputValue.value = sanitized; }; </script> ``` ##### 2. **进阶验证规则** | 需求场景 | 正则表达式 | 说明 | |-------------------------|-------------------------------------|--------------------------------------| | 允许负数 | `/^-?\d*\.?\d*$/` | 开头允许负号[^2] | | 禁止小数点开头/结尾 | `/^(?!\.$)\d+\.?\d*$/` | 如`.5`或`5.`被禁止 | | 限制小数点后最多两 | `/^\d+(\.\d{0,2})?$/` | 如`3.14`允许,`3.141`被截断[^4] | --- #### 三、典型应用场景 ##### 1. **金额输入框(允许两小数)** ```javascript value.replace(/[^\d.]/g, &#39;&#39;) .replace(/^\./g, &#39;&#39;) // 禁止以小数点开头 .replace(/\.{2,}/g, &#39;.&#39;) // 多个小数点保留一个 .replace(/(\..*)\./g, &#39;$1&#39;) .replace(/(\.\d{2})\d+/, &#39;$1&#39;); // 限制小数 ``` ##### 2. **科学计数法输入** ```javascript /^-?\d*\.?\d+([eE][-+]?\d+)?$/.test(value) // 允许如`1.23e5` ``` --- #### 四、调试建议 1. **正则测试工具验证** 使用[RegExr](https://regexr.com/)在线工具测试正则表达式: ```javascript /^-?\d+\.?\d*$/.test("123.45") // 返回 true ``` 2. **边界值测试** ```javascript // 测试用例 ["123", "-456", "78.90", ".123", "12.34.56"].forEach(str => { console.log(`${str}: ${/^-?\d+\.?\d*$/.test(str)}`); }); // 输出: true, true, true, false, false ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值