<!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>
JS-字符串的replace方法配合正则的使用
最新推荐文章于 2023-05-22 17:52:20 发布