input 正则控制输入

转自:http://blog.sina.com.cn/s/blog_4ccb887a0100a5wv.html

<input type='text' id='SYS_PAGE_JumpPage' name='SYS_PAGE_JumpPage' size='3' maxlength='5' onkeyup='this.value=this.value.replace(/[^1-9]\D*$/,"")' ondragenter="return false" onpaste="return !clipboardData.getData('text').match(/\D/)"" style="ime-mode:disabled;">

 

 

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种正则表达式
"^\\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>

<think>首先,用户的问题是:“我想限制输入为整数的正则表达式 请问正则表达式 验证输入为整数”。用户想要一个正则表达式来验证输入是否为整数。 根据系统级指令: - 所有行内数学表达式必须使用 $...$ 格式。 - 独立公式必须使用 $$...$$ 格式并单独成段。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 用户提供的引用是关于正则表达式验证数字的: - [^1]:验证非零正整数。 - [^2]:验证数字输入(包括小数)。 - [^3]:验证负整数。 - [^4]:验证正整数或数字和小数点。 - [^5]:验证实数(正负整数和小数)。 用户的问题是关于验证整数的,包括正整数、负整数和零。所以,我需要提供一个正则表达式来匹配任何整数(正、负或零)。 步骤: 1. **理解需求**:整数包括正整数(如123)、负整数(如-123)和零(0)。不包括小数、字母或其他字符。 2. **正则表达式设计**: - 匹配整数:可以有可选的正负号,然后是数字序列。 - 正负号:可选,用 `[+-]?` 表示。 - 数字序列:至少一个数字,用 `\d+` 表示。 - 整个字符串:确保从开始到结束都符合,用 `^` 和 `$`。 - 所以,正则表达式:`^[+-]?\d+$` - 这匹配:可选的正负号后跟一个或多个数字。 3. **考虑边界情况**: - 正数:123 → 匹配 - 负数:-123 → 匹配 - 零:0 → 匹配 - 小数:123.45 → 不匹配 - 空字符串:不匹配 - 字母:abc → 不匹配 - 以零开头:012 → 这会被匹配为整数12,但在严格意义上,012可能被视为无效整数。用户可能不希望匹配前导零,但用户没有指定。通常,正则表达式 `\d+` 允许前导零,除非指定。 - 用户可能想禁止前导零?引用中 [^1] 验证非零正整数,不允许前导零(如 "012" 无效)。但用户的问题是验证整数,包括零,所以可能允许前导零。我应该澄清或提供选项。 4. **参考引用**: - [^1]:验证非零正整数:`^[0-9]*[1-9][0-9]*$`,这不允许零或前导零。 - [^3]:验证负整数:`-\d+`,在Java中。 - [^4]:验证正整数:`^[0-9]*[1-9][0-9]*$`。 - [^5]:验证实数,包括整数和小数。 - 对于整数,通用的是 `^[+-]?\d+$`。 5. **回答结构**: - 逐步解释。 - 提供正则表达式。 - 给出示例代码(如JavaScript,因为引用中有JS)。 - 添加引用标识。 - 生成相关问题。 最终正则表达式:`^[+-]?\d+$` - `^`:字符串开始 - `[+-]?`:可选的正号或负号 - `\d+`:一个或多个数字 - `$`:字符串结束 在代码示例中,使用JavaScript,因为引用中有JS例子。 相关问题: 1. 如何验证正整数? 2. 如何验证负整数? 3. 如何验证整数但禁止前导零? 4. 正则表达式验证小数的写法? 5. 在编程中如何实现正则表达式验证? 回答中引用段落末尾添加引用标识,例如:[^1]</think>### 正则表达式验证整数输入 要限制输入为整数(包括正整数、负整数和零),可以使用正则表达式来验证字符串是否符合整数的格式。整数定义为:可选的正号(+)或负号(-),后跟一个或多个数字(0-9),且不能包含小数点或其他字符。下面我将逐步解释正则表达式的设计过程,并提供可直接使用的代码示例。 #### 步骤 1: 设计正则表达式 - **核心需求**:匹配任何整数(例如:123, -456, 0, +789),但不匹配小数(如 12.3)、字母或空字符串。 - **正则表达式模式**:`^[+-]?\d+$` - `^`:表示字符串的开始。 - `[+-]?`:可选的正号或负号(`?` 表示出现 0 次或 1 次)。 - `\d+`:一个或多个数字(`\d` 匹配数字 0-9,`+` 表示至少一个)。 - `$`:表示字符串的结束。 - **为什么有效**: - 确保整个字符串都符合整数格式(例如,"123" 匹配,但 "123a" 不匹配)。 - 允许零(0)、正整数(如 42)和负整数(如 -100)。 - 简单高效,适用于大多数编程语言的正则引擎[^2][^3]。 #### 步骤 2: 代码示例(JavaScript) 以下是使用 JavaScript 实现验证的完整代码。JavaScript 是常见的前端验证语言,正则表达式语法在其他语言(如 Python、Java、C#)中类似。 ```javascript function validateInteger(input) { // 正则表达式:^[+-]?\d+$ const regex = /^[+-]?\d+$/; return regex.test(input); // 返回 true 表示输入是整数,false 表示无效 } // 测试用例 console.log(validateInteger("123")); // true(正整数) console.log(validateInteger("-456")); // true(负整数) console.log(validateInteger("0")); // true(零) console.log(validateInteger("+789")); // true(带正号的整数) console.log(validateInteger("12.3")); // false(包含小数点) console.log(validateInteger("abc")); // false(包含字母) console.log(validateInteger("")); // false(空字符串) console.log(validateInteger("012")); // true(允许前导零,如 012 被视为 12) ``` - **说明**: - `regex.test(input)` 方法检查输入字符串是否匹配模式。 - 测试用例覆盖了常见场景:有效整数、无效输入(小数、字母、空字符串)。 - 默认允许前导零(如 "012"),因为这在整数表示中常见。如果需要禁止前导零,需调整正则表达式(见下文注意事项)。 #### 注意事项 - **前导零的处理**:上述正则表达式允许前导零(如 "012"),因为 `\d+` 不限制数字起始位。如果业务要求禁止前导零(例如,只接受 "123" 而非 "012"),可使用更严格的模式:`^[+-]?(0|[1-9]\d*)$`。这确保零本身("0")有效,但其他数字不能以零开头[^1][^4]。 - **编程语言适配**:正则表达式 `^[+-]?\d+$` 在大多数语言中通用,语法差异小: - Python: `re.match(r"^[+-]?\d+$", input)` - Java: `Pattern.compile("^[+-]?\\d+$").matcher(input).matches()` - C#: `Regex.IsMatch(input, @"^[+-]?\d+$")` - **性能**:正则表达式验证是高效的操作,时间复杂度为 O(n),适合表单输入验证或 API 参数检查[^2][^5]。 #### 引用说明 本回答参考了正则表达式设计的最佳实践,包括数字验证的通用模式和处理符号的方法[^2][^3][^5]。如果需要验证特定子集(如仅正整数),可调整模式以匹配需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值