使用正则表达式,实现文档关键字的搜索与替换

<div id="box">
        <div id="header">
            <input name="search" type="text" placeholder="搜索内容" class="search"/>
            <button class="btn1">搜索</button>
            <input name="replace" type="text" placeholder="替换内容" class="replace"/>
            <button class="btn2">替换</button>
            <button class="btn3">重置</button>
        </div>
        <div id="text">
            <p>张家界,原名大庸市,湖南省辖地级市,辖2个市辖区(永定区、武陵源区)、2个县(慈利县、桑植县)。位于湖南西北部,澧水中上游,属武陵山区腹地,
                张家界因旅游建市,是中国重要的旅游城市之一是湘鄂渝黔革命根据地的发源地和中心区域。</p>
            <p>1982年9月,张家界国家森林公园为第一个国家森林公园</p>
            <p>1988年8月,张家界 武陵源被列入国家第二批40处重点风景名胜区之内。1992年,
                由张家界武陵源自然风景区被联合国教科文组织列入《世界自然遗产名录》</p>
        </div>
    </div> 

    <script>
        //  获取标签对象

        //  获取父级标签对象 
        const oBox = document.querySelector('#box');

        //  获取 两个input标签
        const oIptSearch = oBox.querySelector('.search');
        const oIptReplace = oBox.querySelector('.replace');

        //  获取 按个button标签
        const oBtnSearch = oBox.querySelector('.btn1');
        const oBtnReplace = oBox.querySelector('.btn2');
        const oBtnReset = oBox.querySelector('.btn3');

        //  获取 内容div标签
        const oDivText = oBox.querySelector('#text');
        
        //  获取 内容div标签的原始内容
        let oldStr = oDivText.innerHTML ; 
        let str = oldStr ;

        //  给 搜索input标签 添加点击事件
        oBtnSearch.addEventListener('click' , function(){
            // 获取 搜索input标签 中 搜索关键词
            let searchCode = oIptSearch.value ;
            console.log( searchCode );

            // 使用模板字符串 解析带有变量的正则表达式
            let reg = `/${searchCode}/g`;

            // 将关键词 调换为 带有标签的关键词
            // 使用 eval() 执行 正则的字符串
            
            // 使用变量 存储 字符串替换结果 
            // 不修改 原始内容变量oldStr 中存储的字符串的原始内容
            let res = oldStr.replace( eval( reg ) , `<span style="background:pink">${searchCode}</span>` );

            // 将替换结果的标签 写入 内容div中
            oDivText.innerHTML = res ;

            console.log( oldStr );
        })

        // 给 替换input标签 添加点击事件
        oBtnReplace.addEventListener('click' , function(){
            // 获取 两个关键词 
            let oldCode = oIptSearch.value;
            let newCode = oIptReplace.value;

            // 使用模板字符串解析正则表达式
            let reg = `/${oldCode}/g` ;

            // 完成字符串替换功能
            let res1 = oldStr.replace( eval( reg ) , `<span style="background:skyblue">${newCode}</span>` );
            
            // 修改原始字符串oldStr 中 存储的字符串内容
            // 将 原始内容替换为 新内容 但是没有span标签
            oldStr = oldStr.replace( eval( reg ) , newCode );

     

            // 将 替换的字符 写入到 内容div中
            oDivText.innerHTML = res1 ;
        
        
        })

        // 给 内容div中重新写入原始字符串内容 
        // 给 oldStr变量中 存储 原始字符串内容
        oBtnReset.addEventListener('click' , function(){
            oDivText.innerHTML = str;
            oldStr = str ;
        })
    </script>

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MySQL 支持使用正则表达式来进行查询。你可以使用 `REGEXP` 或者 `RLIKE` 运算符来匹配一个字段中的值与一个指定的正则表达式相匹配。 例如,如果你想查询表中所有以 "a" 开头的名字,你可以使用如下的查询: ``` SELECT * FROM table WHERE name REGEXP '^a'; ``` 你也可以使用 `RLIKE` 运算符来达到同样的目的: ``` SELECT * FROM table WHERE name RLIKE '^a'; ``` 注意,正则表达式的语法可能略有不同,请参考 MySQL 文档了解更多细节。 ### 回答2: MySQL是一种开源的关系型数据库管理系统,具有强大的查询功能。其中,正则表达式是一种强大的字符串匹配工具,可以在查询中使用正则表达式进行模式匹配。MySQL提供了几个与正则表达式相关的函数,如REGEXP、REGEXP_LIKE和REGEXP_REPLACE等。 REGEXP函数用于从一个文本中匹配满足正则表达式条件的字符串。例如,我们可以使用REGEXP函数查询名字中包含特定字母或者特定模式的员工。比如,以下示例代码可以查询名字中包含字母"a"的员工: SELECT * FROM employees WHERE name REGEXP 'a'; REGEXP_LIKE函数是MySQL的扩展函数,用于检查一个文本是否与正则表达式匹配。与REGEXP函数不同的是,REGEXP_LIKE函数返回的结果是一个布尔值,代表是否匹配成功。以下示例代码演示了如何使用REGEXP_LIKE函数查询名字中包含特定模式的员工,并返回匹配成功的结果: SELECT * FROM employees WHERE REGEXP_LIKE(name, 'pattern'); 其中,pattern是一个正则表达式模式。 REGEXP_REPLACE函数可以用来替换满足正则表达式条件的字符串。以下示例代码使用REGEXP_REPLACE函数将名字中的字母"a"替换为字母"b",并将替换结果返回: SELECT REGEXP_REPLACE(name, 'a', 'b') FROM employees; 以上就是MySQL中使用正则表达式进行查询的一些常用函数和示例。通过使用正则表达式,我们可以更加灵活和精确地查询和操作数据库中的数据。 ### 回答3: MySQL正则表达式是一种强大的搜索工具,可以在数据库中执行复杂的模式匹配。它基于正则表达式的语法,用于匹配和过滤字符串数据。 要在MySQL中使用正则表达式进行查询,可以使用`REGEXP`关键字或`RLIKE`操作符。这些关键字可以与`SELECT`语句一起使用,以根据正则表达式模式返回匹配的结果。 例如,如果有一个名为`employees`的表,其中包含员工的姓名列`name`,可以使用正则表达式来查找以字母"A"开头的员工名字的记录。查询语句如下: ``` SELECT * FROM employees WHERE name REGEXP '^A'; ``` 上述语句将返回所有名字以"A"开头的员工记录。 此外,还可以在查询中使用更复杂的正则表达式模式,以满足特定的搜索需求。例如,以下查询将返回以字母"A"开头,后跟至少一个数字的员工记录: ``` SELECT * FROM employees WHERE name REGEXP '^A[0-9]+'; ``` 除了`REGEXP`关键字之外,MySQL还提供了一些处理正则表达式的函数,如`REGEXP_LIKE`、`REGEXP_REPLACE`和`REGEXP_INSTR`等等。这些函数可以用于更复杂的正则表达式操作。 总之,使用MySQL的正则表达式功能,我们可以灵活地进行字符串数据的搜索和过滤,更好地满足特定查询需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值