JS-字符串的replace方法配合正则的使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        //需求:让字符串中的所有的 a 高亮显示, 不区分大小写 
        //原理把 a 替换成 <span style="color:red">a</span>   

        let str = 'abcABCaa123AA123bbcc';
        document.body.innerHTML += str + '<br>';

        //1.直接替换
        /* 
        发现问题: 只能替换第一个小写a
        原因: replace方法默认只能匹配第一个
        解决: 使用正则表达式
            修饰符 g : 全局匹配
            修饰符 i : 不区分大小写
        */
        let res1 = str.replace('a','<span style="color:red">a</span>');
        document.body.innerHTML += res1 + '<br>';

        //2.使用正则
        //第一个参数:正则  第二个参数: 修饰符  g: global全局匹配
        let reg = new RegExp(/a/ig);
        let res2 = str.replace(reg,'<span style="color:red">a</span>')
        document.body.innerHTML += res2 + '<br>';


        //2.使用正则替换
        /* 
        发现问题1: 默认正则也只能替换第一个
        解决方案1: 使用修饰符 g : 全局匹配

        发现问题2: 默认只能替换小写a
        解决方案2: 使用修饰符 i : 不区分大小写

        发现问题3: 不区分大小写之后, 原来大写A , 也被替换成小写a
        需求: 只是修改a或A的颜色
        解决方案3: 使用replace的替换函数
        */

       //第一个参数: 匹配条件   string | RegExp
       //第二个参数: 替换结果   string | function 
       /* 
       match=>{ return 值 }    match;当前匹配结果   return 值: 当前替换值
            这个回调函数会执行多次, 你的正则能匹配到几个,这个回调函数就会执行几次
       */
       let res3 =  str.replace(/a/ig,match=>{
           return `<span style="color:red">${match}</span>`
       });
       document.body.innerHTML += res3;

    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值