- 常用的输入验证
模式 | 表达式 |
---|---|
1. 非负整数 | /^\d+$/ |
2. 正整数 | /^[0-9][1-9][0-9]$/ |
3. 非正整数 | /^((-\d+)|(0+))$/ |
4. 负整数 | /^-[0-9][1-9][0-9]$/ |
5. 整数 | /^-?\d+$/ |
6. 非负浮点数 | /^\d+(.\d+)?$/ |
7. 正浮点数 | /^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$/ |
8. 非正浮点数 | /^((-\d+(.\d+)?)|(0+(.0+)?))$/ |
9. 负浮点数 | /^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$/ |
10. 浮点数 | /^(-?\d+)(.\d+)?$/ |
11. 数字 | /^\d+(.{1}\d+)?$/ |
12. 由26个英文字母组成的字符串 | /^[A-Za-z]+$/ |
13. 由26个英文字母的大写组成的字符串 | /^[A-Z]+$/ |
14. 由26个英文字母的小写组成的字符串 | /^[a-z]+$/ |
15. 由数字和26个英文字母组成的字符串 | /^[A-Za-z0-9]+$/ |
16. 由数字、26个英文字母或者下划线组成的字符串 | /^\w+$/ |
17. 匹配所有单字节长度的字符组成的字符串 | /^[\x00-\xff]+$/ |
18. 匹配所有双字节长度的字符组成的字符串 | /^[^\x00-\xff]+$/ |
19. 字符串是否含有双字节字 | /[^\x00-\xff]+/ |
20. 匹配中文字符的正则 | /[u4e00-u9fa5]/ |
21. 匹配空行的正则 | /n[s| ]*r/ |
22. 匹配HTML标记的正则 | /<(.)>.1>|<(.*) />/ |
23. 验证文件名由字母,数字,下滑线组成 | /^((\w+)(.{1})(\w+))$/ |
24. 整数或者小数 | /^[0-9]+.{0,1}[0-9]{0,2}$/ |
25. 只能输入数字 | /^[0-9]*$/ |
26. 只能输入n位的数字 | /^\d{n}$/ |
27. 只能输入至少n位的数字 | /^\d{n,}$/ |
28. 只能输入m~n位的数字 | /^\d{m,n}$/ |
29. 由数字、26个英文字母或者下划线组成的字符串 | /^\w+$/ |
30. 手机号 | /^1[3456789]\d{9}$/ 或 /^1\d{10}$/ |
- 常用的用户名、密码验证
模式 | 表达式 |
---|---|
4到16位(字母,数字,下划线,减号) | /^[a-zA-Z0-9_-]{4,16}$/ |
最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符 | /^.(?=.{6,})(?=.\d)(?=.[A-Z])(?=.[a-z])(?=.[!@#$%^&? ]).*$/ |
4到16位(字母,数字,下划线,减号) | /^[a-zA-Z0-9_-]{4,16}$/ |
验证身份证号
1
var reg = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
email地址
1
2
3
4# 第一种
/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/
# 第二种
/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/url地址
1
2
3
4# 第一种
/^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/
# 第二种
/http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?/匹配双字节字符(包括汉字在内)
1
2
3
4
5
6/[^x00-xff]/
// 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){
return this.replace([^x00-xff]/g,"aa").length;
}匹配首尾空格的正则
1
2
3
4
5
6/(^s*)|(s*$)/
// 应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:
String.prototype.trim = function(){
return this.replace(/(^s*)|(s*$)/g, "");
}去除字串中重复的字符的javascript程序
1
2
3
4
5
6
7
8var s = "abacabefgeeii";
var s1 = s.replace(/(.).*1/g, "$1");
var re = new RegExp("["+s1+"]", "g");
var s2 = s.replace(re, "");
alert(s1+s2); // 结果为:abcefgi
// 使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,
// 两者串连。这个方法对于字符顺序有要求的字符串可能不适用。用正则表达式从URL地址中提取文件名的javascript程序
1
2
3var s = "http://www.9499.net/page1.html";
s = s.replace(/(.*/){0,}([^.]+).*/ig, "$2");
alert(s); // 结果为page1限制表单文本框输入内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 只能输入中文:
onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text', clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"
// 只能输入全角字符:
onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')"
onbeforepaste="clipboardData.setData('text', clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"
// 只能输入数字:
onkeyup="value=value.replace(/[^d]/g,'')"
onbeforepaste="clipboardData.setData('text', clipboardData.getData('text').replace(/[^d]/g,''))"
// 只能输入数字和英文:
onkeyup="value=value.replace(/[W]/g,'')"
onbeforepaste="clipboardData.setData('text', clipboardData.getData('text').replace(/[^d]/g,''))"