zoukankan      html  css  js  c++  java
  • 如何在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或补充,可以留言,谢谢!

  • 相关阅读:
    jQuery插件主要有两种扩展方式
    系统负载测试工具-LoadRunner
    安全扫描工具-AppScan
    newinstance()和new有什么区别?(转)
    类的加载、连接和初始化 (转)
    tar 基础
    了解【重放攻击】
    DDLDMLDCLDQL
    web.xml的配置问题
    组合与聚合
  • 原文地址:https://www.cnblogs.com/pingzx/p/10653653.html
Copyright © 2011-2022 走看看