正则

作者: gaoqizhuhui | 来源:发表于2017-07-28 10:18 被阅读0次

    正则:

    它就是一个规则,用来处理字符串的一个规则(正则就是用来处理字符串的)

    1、处理:

    a、匹配:判断一个字符串是否符合我们制定的规则---->用test进行判断 test:reg.test(str)

    b、捕获:把字符串中符合我们正则规则的内容捕获到--->exec:reg.exec(str)

    2、如何创建一个正则

    字面量方式: var reg=/\d/;

    实例创建方式:var reg=new RegExp("");

    两种创建方式的区别:
    a、字面量方式中出现的一切都是元字符,所以不能进行变量值的拼接,而实例创建的方式是可以的
    b、字面量方式中直接写\d就可以,而在实例中需要把它转译 \\d

    在字面量方式中,/ /之间包起来的所有内容都是元字符,有的具有特殊意义,大部分都是代表本身含义的普通的元字符

    var name="abc";
    var reg=/^\d+"+name+"\d+$/g;
    console.log(reg.test("1234abc5678"));  //--->false
    consloe.log(reg.test('1234""""nameeee"5678'));  //--->true
    

    以上情况,只能使用实例创建方式了
    var reg=new RegExp("^\\d+"+name+"\\d+$","g");

    3、如何学习正则:

    console.dir(RegExp.prototype);来学习,看正则原型上都有哪些方法(用面向对象思想来学习js)

    正则的元字符及简单应用:

    元字符:每一个正则表达式都是由元字符和修饰符组成的,【元字符】:在 / /之间具有意义的一些字符
    1、具有特殊意义的元字符:
    \:转义字符,转译后面字符所代表的含义
    ^:以某一个元字符开始(没有实际位置)
    $:以某一个元字符结尾(没有实际位置)eg:

    var reg=/\d/;  //--->包含一个0-9之间的数字`
    `var reg=/^\d$/;  //^和$放一起用时代表只能是xxx的意思,只能是一个0-9之间的数字
    

    \n:匹配一个换行符
    .:除了\n以外的任意字符
    eg:

    var reg=/^0.2$/;  //以0开头,以2结尾,中间可以是除了\n的任意字符`
    `var reg=/^0\.2$/; //此时 . 就代表小数点,用转义字符实现
    

    ( ):分组--->把一个大正则本身划分成几个小正则(var reg=/^(\d+)haha(\d+)$/
    a、分组的作用一:改变x|y的默认优先级
    eg:

    var reg=/^18|19$/; 
    //符合的有18、19、181、189、119、819、1819....或以1开头,或以9结尾;或者以18开头,或以19结尾
    var reg=/^(18|19)$/;  //只能是要么18要么19了
    

    [ ]
    a、在[ ]中出现的所有的字符都是代表本身意思的的字符(没有特殊含义)
    b、中括号中不识别两位数

    var reg=/^[12]$/;  //---->不是12,代表1或者2中的一个
    var reg=/^[12-68]$/;  //不是12-68,是指1、2-6中的一个、8,这三个中的一个
    

    c、
    var reg=/^[\w-]$/; //---->数字、字母、下划线、- 中的一个

    x|y:x或者y中的一个
    [xyz]:x或者y或者z中的一个
    [^xyz]:除了xyz三个以外的任何一个字符
    [a-z]:a-z之间的任何一个字符
    [^a-z]:除了a-z之间的任何一个字符
    \d:一个0-9之间的数字
    \D:除了0-9之间的数字以外的任何字符
    \b:匹配一个边界符
    \w:数字、字母、下划线中的任意一个字符。等同于[0-9a-zA-Z_]
    \s:匹配一个空白字符 空格、一个制表符、换页符
    2、代表出现次数的量词元字符:
    *:出现零到多次
    +:出现一到多次(最少出现一次)
    ?:出现零次或者一次
    {n}:出现n次
    {n,}:出现n到多次
    {n,m}:出现n到m次
    eg:

    var reg=/^\d+$/;  //只能是一到多个数字,且每个都在0-9之间
    var reg=/^1\d{10}$/;  //简单的验证手机号的正则:11位数字,第一位是1;)
    
    元字符的简单应用:

    1、有效数字的正则:(正数、负数、零、小数)
    a、“.”可以出现也可以不出现,一旦出现,后面必须跟着一位或多位数字
    var reg=/^(\.\d+)?$/;
    b、最开始可以有+/-,也可以没有
    var reg=/^[+-]?$/;
    c、整数部分,一位数可以是0-9之间的一个,多位数不能以0开头
    var reg=/^(\d|([1-9]\d+))$/; //改变优先级了

    2、年龄介于18-65之间:
    给划分为三段:18-19,20-59,60-65(有规律的)
    var reg=/^(1[8-9]|[2-5]\d|6[0-5])$/;

    3、验证邮箱的正则(简版):
    左边:数字、字母、下划线、“.”、“-”等,例如:123456789@qq.com12345678@163.com.cnhahahah@kindle.cn
    var reg=/^[\w.-]+@[0-9a-zA-Z]+(\.[a-zA-Z]{2-4}){1,2}$/; //最后是指(\.[a-zA-Z]{2-4})整个再出现1或2次(.com.cn);+指重复一或多次

    4、中国标准真实姓名: 2-4位汉字
    var reg=/^[\u4e00-\u9fa5]{2,4}$/;
    \u4e00和\u9fa5代表最开始和结尾汉字的Unicode编码

    5、身份证号码:
    var reg=/^(\d{2})(\d{4})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(\d|X)$/;
    省(2位)+市(4位)+出生年+月+日+(2位数)+性别(1位,男奇数女偶数)+尾数(数或X)

    相关文章

      网友评论

          本文标题:正则

          本文链接:https://www.haomeiwen.com/subject/qljxlxtx.html