• 如何在match中使用正则表达式


    这是在实现搜索功能的时候遇到的一个问题,在搜索的场景中,会根据搜索框中输入的内容,匹配出包含搜索内容的部分。简单模拟还原使用场景;

    首先定义一个遍历 value 用来接收输入的内容

    var value;
    

    再定义一个简单的数组来模拟需要匹配的数据

    var list = ["aBcd", "abcd","abcd"];
    

    那么搜索的功能简化就是,在这个数组中匹配出包含搜索的内容数据,并将其返回

    如果这个功能这样封装:

    function filterList(value,list) {
      return list.filter( item => {
        return item.match(value)
      })
    }
    

    当我们搜索框中输入 b 时,就只能匹配数组的后两项数据

    filterList = ["abcd","abcd"];
    

    如果我们的期望的是能够忽略字母的大小写,此时在 match 匹配时,参数需要一个正则表达式,下面将上面封装的功能进行改进一下:

    function filterList(value,list) {
      // 将接收的搜索内容进行处理,这里直接使用字符串拼接一个正则表达式,当然也可以使用 new RegExp
      value = '/' + value + '/i'
      return list.filter( item => {
        // vulue 是拼接的一个表达式,需要使用 eval 函数先计算
        return item.match(eval(value))
      })
    }
    

    这样,再次回到上面的使用场景,无论输入b 或者B 都能匹配出数组中全部的数据了

    仅为个人笔记,若有Bug或补充,可以留言,谢谢!

  • 相关阅读:
    C++位运算详解
    SQL语句获取时间的方法
    redis在windows下安装和ThinkPHP中使用
    数据同步存储过程代码
    C#重写OnKeyPress方法
    SQL Server 2008数据库生成数据库脚本(并带数据)
    C#中邮件的发送
    C#中DGV分页功能
    C#中保持文件夹A与B同步
    C# 获取文件大小,创建时间,文件信息,FileInfo类的属性表
  • 原文地址:https://www.cnblogs.com/pingzx/p/10653653.html
Copyright © 2020-2023  润新知