码迷,mamicode.com
首页 > Web开发 > 详细

js正则学习及一些正则集合

时间:2014-11-20 23:16:27      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   使用   

正则中文版详细说明请看中文版w3cschool-----http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
偶还看微软正则表达式语言-快速参考:http://msdn.microsoft.com/zh-cn/library/az24scfc%28v=vs.110%29.aspx


            var reg=/(123)/;
            var str=‘abc123‘;
            str=str.replace(reg,‘***‘);
            alert(str)
            alert(RegExp.$1);    //123 [typeof:string]
            //当reg被任何形式使用过,而且reg里有包裹东西的小括号,那么第一个小括号的内容可以通过RegExp.$1(只能这么写)获得,第二个分组通过$2获得,以此类推,不过只能写到$9,在网上看到$99,不知道哪个对,知道的朋友告诉一声
            
            //在正则里可用\1表示第一个小括号包裹的东西,相当于$1,注意这里的\1里面的值要跟前面括号里的值一样才能被匹配---偶测试是这样的
            var reg=/(12)abc\1/;
            var str1=‘12abc‘;
            var str2=‘12abc12‘;
            alert(reg.test(str1));    //false
            alert(reg.test(str2));    //true
           
            
            所谓惰性的理解:
            ?:官方语言--匹配上一个元素零次或一次;雷同{0,1} 就是可有可无的意思
            var str=‘abcabcab2431abc‘;
            var reg1=/abc/g;
            var reg2=/(abc)*/g;
            var reg3=/.*abc/g;
            var reg4=/.*?abc/g;
            
            alert( str.replace(reg1,‘*‘) );     //**ab2431*
            alert( str.replace(reg2,‘*‘) );     //**a*b*2*4*3*1** 每个边界都被匹配了*为0时,abcabc匹配了当*为2时,abc匹配了当星号为1时
            alert( str.replace(reg3,‘*‘) );     //* .*直接匹配了整个abcabcab2431
            alert( str.replace(reg4,‘*‘) );     //*** 前面2个星号是匹配了abc,abc,后面一个星号是匹配了ab2431abc    把全局的g去掉就很容易看出来了

 一些正则集合:

        var reg={
            
            trim:/^\s+|\s+$/g,
            //去掉字符串前后的空白字符
            
            qq:/^[1-9]\d{4,11}$/,
            //网上看到腾讯QQ号是从10000开始的,然后先预留到12位的qq号
            
            email:/^[a-z\d](\.?[\w\-]+)+[a-z\d]@[a-z\d]+(\-*[a-z\d])*(\.[a-z]{2,6})+$/i,
            //邮箱最前面需是英文字母,@前面需是字母或数字
            //网易:邮件地址需由字母、数字或下划线组成
            //阿里:请勿使用除字母 (a-z)、数字、下划线和英文句号外的其他字符
            //188财富邮:4-20个英文字母,数字,点,减号或下划线组成
            //qq:好像可以全是数字比如1144981399@qq.com
            //正确的怪异写法:str=‘wei--.1.23@1-6-C3c.com.cn‘...
            //错误的写法:str=‘-wei@163.com‘ || ‘wei..a@163.com‘ || ‘wei-@163.com‘...
            
            domain:/^[a-z\d]+(\.([a-z\d][a-z\d\-*]*[a-z\d]|[a-z\d]){1,63})*\.[a-z]{2,6}$/i,
            //万网提示:域名可由英文字母(不区分大小写)、数字、"-"(中横线)构成,不能使用空格及特殊字符(如!、$、&、?等);中文域名可含中文。"-"不能单独注册,不能放在开头或结尾。
            //新网:每个点之间最多为63个字符,添加a记录时--不能含有非数字、字母、-的字符且-字符不能放在开头位置
            //目前只有一个点的最长的域名好像是.travel---来自新网    在此忽略中文域名
            //正确的怪异写法:str=‘mm.jz.W-E--I.com.cn‘ || ‘m.j-3-z.W-E-I.com.cn‘ || ‘wei.com‘...
            //错误的写法:str=‘nmn‘ || ‘-m.wei.com‘ || ‘m.wei.com-‘ || m..wei.com || ‘m.-jz.wei.com‘ || ‘wei.7com‘...
            //漏了一个:str=‘jz-.wei.com‘; 这个二级域名在新网(没有其他网的域名)是可以的,但是匹配却到了错误里面
            
            url:/[http|https|ftp|ed2k|thunder|flashget]:\/\/[^\s]+/i,
            //URL格式---百度百科http://baike.baidu.com/view/567419.htm?fr=aladdin--真心不懂这些协议的具体信息
            
            postcode:/^[1-9]\d{5}$/,
            //邮编---必须为1-9开头的6个数字组成
            
            tel:/^1[3|4|5|7|8]\d{9}$/,
            //手机号码--参考百度百科http://baike.baidu.com/view/781667.htm?fr=aladdin 说实话还是不太清楚其规则
            
            ftel:/^[1-9]\d{0,3}-\d{3}-\d{8}$/,
            //固话--没用过固话,来自百度知道http://zhidao.baidu.com/link?url=9boKAtc5FCYvUTehiVazGId-qjZJVxHFyGMlBLv5JzbZ68nqetbq2ZJsVWKU7Vw6M92uPRCIOki1BhaLFTX12q
            //但是,有的还是有带0的,那就这样吧:86-010-66778899
            
            id:/^[1-8]{2}\d{4}[1|2][0|8|9]\d{2}[0|1]\d[0-3]\d{4}[\d|X]$/i,
            //身份证号---来自百度百科http://baike.baidu.com/item/%E5%B1%85%E6%B0%91%E8%BA%AB%E4%BB%BD%E8%AF%81%E5%8F%B7%E7%A0%81?from_id=12704049&type=syn&fromtitle=%E8%BA%AB%E4%BB%BD%E8%AF%81%E5%8F%B7&fr=aladdin
            //从1999年10月1日起,全国实行公民身份证号码制度,居民身份证编号由原15位升至18位。前6位为地址码;第七位至14位为出生日期码,此码由6位数改为8位数,其中年份用4位数表示;第15位至17位为顺序码,取消了顺序码中对百岁老人使用的特定编号;第十八位为校验码,主要是为了校验计算机输入公民身份证号码的前17位数字是否正确,其取值范围是0至10,当值等于10时,用罗马数字符χ表示。所以现在都应该是二代身份证了吧
            //给个最多200岁咯,1800,最小就2099
            
            password:/^[\w\s`~!@#\$%\^&\*\(\)\-\+=\\\|\[\]\{\};:\‘\",\.<>/\?]*$/,
            //匹配输入的全是英文字符或数字,没有一点中文,日文等特殊字符
       delNoPsw:/[^[\w\s`~!@#\$%\^&\*\(\)\-\+=\\\|\[\]\{\};:\‘\",\.<>/\?]]*/g //删除输入的非密码形式的字符串,比如说中文,日文等特殊字符 };

 

reg.password和reg.delNoPsw的用处:

我想一般用于移动端吧,因为移动端页面小,又要呈现尽量多的东西,像再次输入密码这样的用户效果就可以合并到一个密码框(像淘宝是这样做的),如下

bubuko.com,布布扣

 

正则集合无注释版下载:

http://pan.baidu.com/s/1qW19PN2

 

----以上皆为个人理解,如有错误纯属正常,因为理解来自于视频学习和个人对网络文章的理解,希望指正,偶要成长

 

js正则学习及一些正则集合

标签:des   style   blog   http   io   ar   color   os   使用   

原文地址:http://www.cnblogs.com/aiweidong/p/4111183.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!