• js——正则


    转移符

    显示特殊字符,想显示用‘\’

    后面加特殊字母为特定用途。例: 换行(回车);   行结束(正常一个回车代表 + );  -->tab键--> table   缩进

    转移符实用场景1:

    document.body.innerHTML = "<div>
                                                <span>content</span>
                                                <p>内容</p>
                                            </div>"            
    View Code

    两种创建方式:

    • 直接量(例:var reg = /规则/正则属性[i/g/m];)推荐
    • new RegExp(“规则”, 正则属性);

    属性/修饰符(可以一个或多个混合使用):

    • i 忽略大小写(ignoreCase)
    • g 全局(global)
    • m 多行匹配(在有换行符 中匹配多行)

    reg.test(); //判断字符串有没有符合要求的片段,返回true或false

    str.match(reg); // 把所有符合要求的内容返回,match是字符串的方法

    reg.exec(); 以reg.lastIndex的游标位置开始匹配,exec是正则表达式的方法

    reg.lastIndex 与 reg.exec()相匹配,如果不加g(即不全局匹配),则lastIndex一直是0

    []   // 表达式,代表一位,其中写的是取值区间

    ^ 如果放在表达式中表示非(!),否则表示以什么开头; ...$表示以...结尾

    (值a | 值b)  // 取值a或者值b

    w (world) ===  [0-9A-z_]

    W ===  [^w]

    d ===  [0-9]

    D === [^d]

    s (空白字符)  ===  [ vf ]

    S === [^s]

     === 单词边界 例: /cde/g;

    B === 非单词边界

    . === [^ ]

    n+  {1, 正无穷}

    n*  {0, 正无穷}

    n?  {0, 1}

    正在则表达式默认为贪婪匹配,能一次多个匹配,不会多次少个匹配。

    在表达式后加?则为非贪婪匹配

    var reg = /^d[wW]*d$/g; // 匹配首尾都是数字

    () // 子表达式

    /(w)1/;  // “1”:反向引用第一个子表达式中的内容 ,即 匹配 xx

    reg.exec(str); // 子表达式的值也会被加到类数组中

    // 匹配aabb
    var reg = /(w)1(w)2/g;

    str.replace

    var str = "aa";
    str.replace('a', 'b'); 
    console.log(str); // "ba"(不全局匹配)
    var reg = /a/;
    str.replace(reg, 'b'); // ba
    var reg1 = /a/g;
    str.replace(reg1, 'b'); //bb

    例题:把aabb变成bbaa

    var reg = /(w)1(w)2/g;
    var str = "aabb";
    str.replace(reg, "$2$2$1$1");
    // $2代表第2个子表达式的内容(反向引用)
    console.log(str);  // bbaa
    
    或
    
    str.replace(reg, function($, $1, $2){
        return $2+$2+$1+$1;
    })
    // 回调函数中的$表示正则表达式匹配的结果

    匹配汉字: [u4e00-u9fa5]

    匹配双字节及汉字: [^x00-xff]

    正向预查(正向断言)

    在表达式后加 “?” 为非贪婪匹配

    (?=值) 为正向预查
    var str = "abaaa";
    var reg = /a(?=b)/g; // 找后面跟b的a
    str.match(reg); // a

    例题: 科学计数法(1000000.....   ==>   100.000.000)

    var str = "100000000";
    var reg = /(?=(B)(d{3})+$)/g; 
    str.replace(reg, ".");
    
    解析:
    ?=  // 正向预查
    B  // 非单词边界
    d  // 数字
    {3}  // 3个
    + //1个或多个
    $ //以...结尾(表示从后往前查)
    g // 全局

    例题: 去重

    var str = "aaaaaabbbbbdddd";
    var reg = /(w)1+/g;
    str.replace(reg, '$1'); // abd
  • 相关阅读:
    jQuery 选择器 与 事件
    JavaScript 语法
    Java 包(package)
    Java 接口
    java封装继承多态---继承篇
    Java数组的学习
    java基础周总结
    JAVA基础接口集合框架
    周总结
    Java基础
  • 原文地址:https://www.cnblogs.com/ywang/p/8117649.html
Copyright © 2020-2023  润新知