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或补充,可以留言,谢谢!

  • 相关阅读:
    Javascript--普通函数调用-涨工资计算函数
    Javascript--运算符判断成绩运算
    Javascript-闰年javascript的判断
    Javascript-逻辑判断或(&&)练习
    Javascript-短路 与(&&)
    UVALive6434_Number Assignment
    HDU4811_Ball
    HDU4810_Wall Painting
    HDU4803_Poor Warehouse Keeper
    HDU4802_GPA
  • 原文地址:https://www.cnblogs.com/pingzx/p/10653653.html
Copyright © 2011-2022 走看看