前端学习(三十二)正则(笔记)

===========================================
正则    正则表达式
    Regular Expression
    规则表达式

正则有两个作用:
    1.操作字符串
    2.校验表单

操作字符串    
    使用正则操作字符串非常简单,不是必须得用。使用是为了方便
============================================
正则玩的就是规则
    
    itwenqiang@sina.com

    137-1807-9033

    010-4334567

    北京市朝阳区建外SOHO东区 7304室
========================================
玩正则
    var re = new RegExp('规则');

    str.search(re);


    var re = new RegExp('规则','选项');
        i         Ignore         忽略
        忽略大小写

    简写
        var re = /规则/选项;

    转义
                     转义
                     换行
                     tab     制表符

        \            
    正则中的转义
        d             0到9的数字

===========================================
    匹配所有数字
        str.match(re)

    正则的特性:
        1.懒
            选项:
                g         global
                全局匹配
        2.笨
            量词:
                5个梨
                梨{5}

                若干
                梨+     最少1个,最多不限
        3.贪婪
            尽可能的多拿
==========================================
敏感词汇过滤
    str.replace()         不用正则配合很弱

    str.replace(str,str);

    str.replace(str|re,str);

    str.replace(/北京|斯达/,'***');

    str.replace(str|re,str|fn);
==========================================
修饰
    ^         行首
    $         行尾
==========================================
手机小说格式整理

选项
    m             muti-line
        多行模式

    单行模式(默认)
    多行模式             m
========================================
    选项
        i         Ignore         忽略大小写
        m         Muti-line     多行模式
        g         Global         全局匹配

    []
        任选一个
        /a[abc]c/             
        aac             √
        abc             √
        acc             √
        aabcc             ×
        
        范围
        /[0-9]/         所有数字
        /[a-z]/         所有小写英文字母
        /[A-Z]/         所有大写英文字母
        /[0-9a-zA-Z]/     所有数字英文字母
        /0-z/             ×

        排除
        /[^0-9]/         除了数字
        /[^0-9a-zA-Z]/     除了数字和英文
        /[0-9^a-zA-Z]/     ×



    /ab+/
    abbbbbbbbbbb         √
    abababababab         ×

    /(ab)+/
    abababababab        √
    abababababa         ×

    量词
        {n}         出现n次
        {n,m}         最少n个,最多m个
        {n,}         最少n个,最多不限

        ?     {0,1}     出现1次,或者不出现
        *     {0,}     出不出现都可以多少随意
        +     {1,}     最少1次,最多不限

    转义
        d     /[0-9]/     所有数字
        w     /[a-zA-Z0-9_]/      所有英文数字_
        s                 所有空白符号

        D     /[^0-9]/     除了数字
        W     /[^0-9a-zA-Z_]/    除了数字英文_
        S                 除了所有空白符号

        .                 所有字符
        .                字符串.
    方法
        str.search(re)
        str.match(re)
=======================================
表单校验
    re.test(str);
    注意表单校验的正则必须加行首和行尾
    座机校验
    010-5323563

    区号    
        3-4位的数字     
        第一位一定是0
        第二位一定不是0
        0[1-9]d{1,2}

    -    
        -
    号码
        7-8位的数字
        第一位一定不是0
        [1-9]d{6,7}

    /^0[1-9]d{1,2}-[1-9]d{6,7}$/

    邮箱校验
    itwenqiang @ sina .com
    itwenqiang @ sina .com.cn

    名字
        英文数字_
        w+
    @
        @
    域名
        英文数字-
        [a-zA-Z0-9-]+

    域名后缀
        .     2-8位字母         可以出现1-2次

        (.[a-zA-Z]{2,8}){1,2}

/^w+@[a-zA-Z0-9-]+(.[a-zA-Z]{2,8}){1,2}$/

    年龄校验
        18到100

        18 19
            1[89]
        20-99
            [2-9]d
        100
            100

        /^(1[89]|[2-9]d|100)$/
    手机号
        11位数字
        第一位一定是1
        /^1[34578]d{9}$/

    身份证号
        15或18位
        最后一位有可能是x
        第一位一定不是0
        /^[1-9]d{13}(d|d{2}[0-9x])$/i
========================================
操作字符串
    去掉行首行尾空格
    var str = '    on box      ';
    a).
        var arr = str.match(/s+/g);
        str = arr.join(' ');
    b).
        str = str.replace(/^s+|s+$/g,'');

    //中间多个空格替换成一个空格
    var str = 'on     box    active';
    str = str.replace(/s+/g,' ');

    //中间多个空格换成一个,首尾空格去掉
    var str = '   on  box   active    ';
    str = str.replace(/^s+|s+$/g,'').replace(/s+/g,' ');

==========================================
邮箱
/^w+@[a-z0-9-]+(.[a-z]{2,8}){1,2}$/i
年龄     18-100
/^(1[89]|[2-9]d|100)$/
座机
/^0[1-9]d{1,2}-[1-9]d{6,7}$/
手机
/^1[34578]d{9}$/
身份证
/^[1-9]d{13}(d|d{2}[0-9x])$/i

============================================

原文地址:https://www.cnblogs.com/wxiaoyu/p/9579456.html