常用js正则表达式(持续更新...)

去除左侧空格

function LTrim(str) {

    return str.replace(/^\s*/g,"");

}

去除右侧空格

function RTrim(str) {

    return str.replace(/\s*$/g,""); 

}

 去掉字符串两端的空格 

function trim(str) {

    return str.replace(/(^\s*)|(\s*$)/g, ""); 

} 

去除字符串中间空格 

function CTim(str) {

    return str.replace(/\s/g,''); 

} 

是否为由数字组成的字符串 

function is_digitals(str) { 

    var reg=/^[0-9]*$/;//匹配整数 return reg.test(str);       

}

验证是否为整数,包括正负数

function Is_Int(str) { 

    var reg=/^(-|\+)?\d+$/; return reg.test(str);

} 

大于0的整数 

function Is_positive_num(str) { 

    var reg=/^\d+$/; return reg.test(str);

}

验证负整数

function Is_minus(str) {

    var reg=/^-\d+$/; return reg.test(str); 

}

验证是否为浮点数(正数) 

function IsPositiveFloat(str) { 

    var check_float =new RegExp("^[1-9][0-9]*\.[0-9]+$");

    //匹配浮点数
    return check_float.exec(str); 

}

是否为固定电话

区号3到4位,号码7到8位,区号和号码用"-"分割开,转接号码为1到6位,用小括号括起来紧跟在号码后面

 function IsTelphone(str) {

       var reg = /^[0-9]{3,4}\-\d{7,8}(\d1,6)?$/;          

       if (reg.test(str)) return true;     

       else return false;

 }

验证是否为手机号码

function checkMobile(){ 
    var sMobile = document.mobileform.mobile.value 

    if(!(/^1[3|5][0-9]\d{4,8}$/.test(sMobile))){ 

        alert("不是完整的11位手机号或者正确的手机号前七位"); 

        document.mobileform.mobile.focus(); 

        return false; 
    } 

} 

验证是否为中文

function IsChinese(str) { 

    var reg = /^[\u0391-\uFFE5]+$/; 

    return reg.test(str); 

} 

验证是否为qq号码 

长度为5-10位

function IsQq(str) {

    var reg = /^[1-9]\d{4,9}$/;

    return reg.test(str);

}

验证邮编

function IsPostId(str) {

    var reg = /^\d{6}$/;

    return reg.test(str);

}

  验证邮箱

function IsEmail(str) {

    var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;

    return reg.test(str);

}

验证IP地址

function IsIp(str) {
    var check = function(v) {
        try {
           return (v <= 255 && v >= 0)
        } catch(x) {
           return false;
        }
    }

    var re = str.split(".")

    return (re.length == 4) ? (check(re[0]) && check(re[1]) &&check(re[2]) && check(re[3])) : false

}

身份证验证

function IsIdnum(str) {
    var City = {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",
     31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",
     43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",
     61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "}

    var iSum = 0
    var info = ""

    if (!/^\d{17}(\d|x)$/i.test(str))
        return false;
        str = str.replace(/x$/i,"a");

    if (City[parseInt(str.substr(0,2))]==null) {
        alert( "Error:非法地区");
        return false;
    }

    sBirthday = str.substr(6,4) + "-" + Number(str.substr(10,2)) + "-" + Number(str.substr(12,2));
    var d = new Date(sBirthday.replace(/-/g,"/"))

    if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) {
        alert("Error:非法生日");
        return false;
    }

    for (var i = 17;i>=0;i --)
    iSum += (Math.pow(2,i) % 11) * parseInt(str.charAt(17 - i),11)

    if (iSum%11 != 1) {
        alert("Error:非法证号");
        return false;
    }

    return City[parseInt(str.substr(0,2))] + "," + sBirthday + "," + (str.substr(16,1)%2?"男":"女")
}

判断是否短时间(如13:04:06)

function IsTime(str) {
    var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);

    if (a == null) {
        alert('输入的参数不是时间格式'); 
        return false;
    }

    if (a[1]>24 || a[3]>60 || a[4]>60) {
        alert("时间格式不对");
        return false
    }
    
    return true;
}

判断是否短日期(如2020-07-24)

function IsDate(str) {
    var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);

    if(r == null)
        return false;

    var d= new Date(r[1], r[3]-1, r[4]);
    return(d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3]&&d.getDate() == r[4]);
}

判断是否长时间(如2020-07-24 13:04:06)

function IsDateTime(str){
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})(\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    var r = str.match(reg);

    if(r == null)
        return false;
        
    var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
    return (d.getFullYear() == r[1]&&(d.getMonth() + 1) == r[3]&&d.getDate() == r[4]&&d.getHours() == r[5]&&d.getMinutes() == r[6]&&d.getSeconds() == r[7]);
}

是否全部由a-Z或者是A-Z的字母组成

function Is_Letters(str) {
    var reg = /[^a-zA-Z]/g;
    return reg.test(str);
}

是否由字母和数字组成

function Is_letter_num(str) {
    var reg = /[^0-9a-zA-Z]/g;
    return reg.test(str);
}

是否由字母和数字,下划线,点号组成,且开头的只能是下划线和字母

function IsUserName(str) {
  var reg = /^([a-zA-z_]{1})([\w]*)$/g;
  return reg.test(str);
}

判断浏览器的类型

function GetBrowseType() {
    alert(window.navigator.appName);
}

 判断ie的版本

function Get_Eidition(){
    alert(window.navigator.appVersion);
}

判断客户端的分辨率

function GetResolution() {
    alert(window.screen.height);
    alert(window.screen.width);
}


判断用户名是否为数字字母下滑线

function notchinese(str) {
    var reg=/[^A-Za-z0-9_]/g
    if (reg.test(str)) {
        return (false);
    } else {
        return(true);
    }
}    

验证url

function IsUrl(str) {
    var reg = /^(http\:\/\/)?([a-z0-9][a-z0-9\-]+\.)?[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+(\/[a-z0-9\.\,\-\_\%\?\=\&]?)?$/i;
    return reg.test(str);
}

判断是否含有汉字       

function ContentWord(str) {
    if (escape(str).indexOf("%u") != -1) return true;
    else return false;
}

 

下面是正则表达式中的一些常用模式。

/pattern/

结果

.

匹配除换行符以外的所有字符

x?

匹配 0 次或一次 x 字符串

x*

匹配 0 次或多次 x 字符串,但匹配可能的最少次数

x+

匹配 1 次或多次 x 字符串,但匹配可能的最少次数

.*

匹配 0 次或一次的任何字符

.+

匹配 1 次或多次的任何字符

{m}

匹配刚好是 m 个 的指定字符串

{m,n}

匹配在 m个 以上 n个 以下 的指定字符串

{m,}

匹配 m个 以上 的指定字符串

[]

匹配符合 [] 内的字符

[^]

匹配不符合 [] 内的字符

[0-9]

匹配所有数字字符

[a-z]

匹配所有小写字母字符

[^0-9]

匹配所有非数字字符

[^a-z]

匹配所有非小写字母字符

^

匹配字符开头的字符

$

匹配字符结尾的字符

\d

匹配一个数字的字符,和 [0-9] 语法一样

\d+

匹配多个数字字符串,和 [0-9]+ 语法一样

\D

非数字,其他同 \d

\D+

非数字,其他同 \d+

\w

英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样

\w+

和 [a-zA-Z0-9]+ 语法一样

\W

非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样

\W+

和 [^a-zA-Z0-9]+ 语法一样

\s

空格,和 [\n\t\r\f] 语法一样

\s+

和 [\n\t\r\f]+ 一样

\S

非空格,和 [^\n\t\r\f] 语法一样

\S+

和 [^\n\t\r\f]+ 语法一样

\b

匹配以英文字母,数字为边界的字符串

\B

匹配不以英文字母,数值为边界的字符串

a|b|c

匹配符合a字符 或是b字符 或是c字符 的字符串

abc

匹配含有 abc 的字符串

(pattern)

() 这个符号会记住所找寻到的字符串,是一个很实用的语法。第一个 () 内所找到的字符串变成 $1 这个变量或是 \1 变量,第二个 () 内所找到的字符串变成 $2 这个变量或是 \2 变量,以此类推下去。

/pattern/i

i 这个参数表示忽略英文大小写,也就是在匹配字符串的时候,不考虑英文的大小写问题。

\

如果要在 pattern 模式中找寻一个特殊字符,如 "*",则要在这个字符前加上 \ 符号,这样才会让特殊字符失效

 

 

下面给出一些例子:    

范例

说明

/perl/

找到含有 perl 的字符串

/^perl/

找到开头是 perl 的字符串

/perl$/

找到结尾是 perl 的字符串

/c|g|i/

找到含有 c 或 g 或 i 的字符串

/cg{2,4}i/

找到 c 后面跟着 2个到 4个 g ,再跟着 i 的字符串

/cg{2,}i/

找到 c 后面跟着 2个以上 g ,再跟着 i 的字符串

/cg{2}i/

找到 c 后面跟着 2个 g,再跟着 i 的字符串

/cg*i/

找到 c 后面跟着 0个或多个 g ,再跟着 i 的字符串,如同/cg{0,1}i/

/cg+i/

找到 c 后面跟着一个以上 g,再跟着 i 的字符串,如同/cg{1,}i/

/cg?i/

找到 c 后面跟着 0个或是 1个 g ,再跟着 i 的字符串,如同/cg{0,1}i/

/c.i/

找到 c 后面跟着一个任意字符,再跟着 i 的字符串

/c..i/

找到 c 后面跟着二个任意字符,再跟着 i 的字符串

/[cgi]/

找到符合有这三个字符任意一个的字符串

/[^cgi]/

找到没有这三个字符中任意一个的字符串

/\d/

找寻符合数字的字符,可以使用/\d+/来表示一个或是多个数字组成的字符串

/\D/

找寻符合不是数字的字符,可以使用/\D+/来表示一个或是更多个非数字组成的字符串

/\*/

找寻符合 * 这个字符,因为 * 在常规表达式中有它的特殊意思,所以要在这个特殊符号前加上 \ 符号,这样才会让这个特殊字符失效

/abc/i

找寻符合 abc 的字符串而且不考虑这些字符串的大小写

 

匹配中文字符的正则表达式: [u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:< (S*?)[^>]*>.*?|< .*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

 

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字

匹配身份证:d{15}|d{18}
评注:中国的身份证为15位或18位

匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]d*$     //匹配正整数
^-[1-9]d*$      //匹配负整数
^-?[1-9]d*$   //匹配整数
^[1-9]d*|0$     //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$       //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$       //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$     //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$     //匹配非负浮点数(正浮点数 + 0)

^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
^(0|[1-9]/d*)(/./d*)?$              //匹配正实数

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$     //匹配由26个英文字母的大写组成的字符串
^[a-z]+$      //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值