正则表达式-基础知识总结------彭记(09)

正则表达式

构造函数法

-new RegExp(正则规则,匹配模式)

-new RegExp(正则规则)

字面量法

-/开头  /结尾 中间放你想要放的正则规则

-正则规则里面千万不要出现空格,除非你就是想要验证空格

var reg =/规则/

匹配方法

-test 方法--用来给正则对象匹配字符串

-正则对象的方法--正则对象。test(字符串)

-用正则规则去匹配字符串,如果字符串符合规则,就会返回true,否则返回false

元字符

“.” 匹配除了\r\n以外的任意单个字符

“\” 转义字符--把特殊符号的特殊意义去除,变成普通字符

“|” 或者--表示竖线左右两边的表达式或者字符,任意出现一次

“()” 提高优先级和分组

量词

“*” 指*之前的符号或者表达式出现任意多次>=0...{0,}

“+” 表示+之前的字符或者表达式出现>=1次 至少一次...{1,}

“?” 表示?之前的字符或者表达式出现0或1次...{0,1}

范围量词:“{}”

“{n}” 表示之前的符号或者表达式出现n次

“{n,}” 表示之前的符号或者表达式出现至少n次

“{n,m}” 表示之前的符号或者表达式出现n~m次

开头--“^”表示必须以某个字符或者某个表达式开头--严格模式

结尾--“$”表示必须以,某个字符或者表达式结尾

//必须以a开头,必须以a结尾

var reg  =/^a.*a$/;

范围:表示规定一个字符出现的范围

“[ ]” 表示范围,其中的一种用法

1.[0-9] 表示数字

2.[a-z] 表示小写字母

3.[A-Z] 表示大写字母

“[ ]” 也可以作为转义字符使用

用法--[想要转义的字符]

取反

[^0-9]--表示不再数字范围内,非数字

 

//    var reg1 = /[0-9]/;  //出现数字即可
//    console.log(reg1.test("aa"));
//    console.log(reg1.test("aa1"));
//
//    var reg2 = /[a-z]/;  //出现小写字母即可
//    console.log(reg2.test("1223"));
//    console.log(reg2.test("A1223Z"));
//    console.log(reg2.test("a1223Z"));

    //不是从0-9,想从 1 - 5
//    var reg = /[1-5]/;  //要求出现1-5之间的任意数字
//    console.log(reg.test("00000000"));
//    console.log(reg.test("000001000"));
//    console.log(reg.test("000004000"));
//    console.log(reg.test("00000500"));
//    console.log(reg.test("00000600"));

    //特殊集合  -- 想要a  c   g  i  f   允许将多个字符组合起来形成一个新的字符集合

//    var reg =  /[acgif]/;  //表示其中的字符出现任意一个即可
//    console.log(reg.test("456"));
//    console.log(reg.test("45a6"));
//    console.log(reg.test("45i6"));
//    console.log(reg.test("beh"));

//    var reg = /[.]/;
//    console.log(reg.test("a."));
//    console.log(reg.test("ab"));
    
    var reg = /[^0-9]/;
    console.log(reg.test("125"));
    console.log(reg.test("125a"));
    console.log(reg.test("125!"));

 

预定类

\d 和 [0-9] 同样的意义

\D 和[^0-9]

\s 表示空白字符

\S 表示非空白字符

注意点:空字符串,既不是空白,也不是非空白

\w ===[0-9a-zA-Z] 包含数字和字母

 

\W ===[^0-9a-zA-Z] 不包含数字和字母

小练习

 

<script>


    /**
     * 正则表达式书写顺序
     *
     *      1   看到需求,找出需求的规律
     *      2   初级阶段,先按照自己的想法把自己发现的规律表达出来
     *              先不要纠结正则表达式的严谨性,不要想着各个方面都能考虑到
     *              先按照自己的想法写,每个人的想法不同,写出的正则可能同,重在练习
     *      3   用写好的正则去匹配需求中一些常见的例子
     *
     *      4   将来在工作中,也不一定是自己写,但是要能看懂,将来改需求的时候能自己修改正则
     */

    //验证电话号码
    //    010-12345678
    //    0313-1234567

    /**
     *  0 开头
     *  有3位或者4位区号
     *  区号和号码中间用 - 隔开
     *  后面有7或者8位的号码
     */
//    var regTel1 = /^[0][0-9]{2,3}[-][0-9]{7,8}$/;
//    var regTel2 = /^[0]([0-9]{2}[-][0-9]{8}$)|([0-9]{3}[-][0-9]{7}$)/;
//
//    console.log(regTel1.test("010-12345678"));
//   console.log(regTel2.test("010-12345678"));
//    console.log(regTel1.test("0313-1234567"));
//    console.log(regTel2.test("0313-1234567"));


    //验证QQ号
    //   78224116
    /**
     *      纯数字
     *      5-11位
     *      不能以0开头
     */
//    var regQQ = /^[1-9][0-9]{4,10}$/;
//    console.log(regQQ.test("78224116"));



    //手机号码
    //号段 13[0-9] 14[57] 15[0-9] 18[0-9]
    //

    /**
     *      都是以1开头
     *      区号
     *      总长度:11
     */

//    var regPhone = /^[1](([3][0-9])|([4][57])|([5][0-9])|([8][0-9]))[0-9]{8}$/;
//    console.log(regPhone.test("18877665543"));



    //邮箱的正则表达式:
    //hanmeimei_lilin-cool888.en@yahoo126.com.cn

    //   1213456@163.com  .us
    //   1223456@qq.com

    //   abc@163.com.cn
    /**
     *  必然有@符号    还有.符号
     *
     *      @前面  可以使数字、字母、  - _  .
     *      @后面  跟着数字、字母
     *      .的后面 数字字母 .
//     */
//    var regMail = /[0-9a-zA-Z_.-]+[@][0-9a-zA-Z]+[.][0-9a-zA-Z]+([.]{0}|[.][0-9a-zA-Z])/;
//    console.log(regMail.test("hanmeimei_lilin-cool888.en@yahoo126.com.cn"));

    /*
     * 请写一个正则表达式匹配身份证号码
     *      分两种情况
     *          以4开头
     *          15位的数字
     *          18位,最后一个可以是数字,也可以是x
     */

//    var regsfz = /^[4]([0-9]{14})|([0-9]{16}([0-9]|[xX]))$/;
//    console.log(regsfz.test("450066199112031234"));


</script>

 

posted @ 2017-08-14 18:21  依旧安好  阅读(178)  评论(0编辑  收藏  举报