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

正则中文版详细说明请看中文版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:好像可以全是数字比如[email protected]

            //正确的怪异写法:str='[email protected]'...

            //错误的写法:str='[email protected]' || '[email protected]' || '[email protected]'...

            

            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的用处:

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

 

正则集合无注释版下载:

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

 

----以上皆为个人理解,如有错误纯属正常,谢谢指正

 

你可能感兴趣的:(js)