• 常用的输入验证
模式 表达式
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标记的正则 /<(.)>.|<(.*) />/
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
    8
    var 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
    3
    var 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,''))"