【正则表达式】正则表达式里使用变量

const shuai = 'No'
'My Name Is ShuaiGe'.match(new RegExp(shuai, 'gi'));
//↑↑↑↑↑↑↑↑
//等同于
//↓↓↓↓↓↓↓↓
/No/gi.test('My Name Is ShuaiGe')

用作领域

  • 搜索的字符动态改变,例如↓
  • 模糊搜索
  • 例:
    • 一个文本宽,输入文本模糊搜索用户

  • 现有n条数据,文本框输入时模糊过滤
<template>
    <input
      type="text"
      @input="inputEv"
      v-model="search"
      placeholder="输入用户昵称"
    />
    <h5 style="border-bottom: dashed 1px black" v-for="i in renderList">
      {{ i.name }}
    </h5>
</template>
<script setup>
import { ref } from "vue";

// 假如这里有很多数据
const data = [
  {
    name: "abcsjddhfjkfkfedkfdjf",
  },
  {
    name: "dfefea",
  },
  {
    name: "fefefee",
  },
  {
    name: "dddwd",
  },
  {
    name: "dwdwd",
  },
  {
    name: "2233",
  },
  {
    name: "ewe34",
  },
  {
    name: "dwdw",
  },
  {
    name: "343dw",
  },
  {
    name: "2343w",
  },
  {
    name: "343ewd",
  },
  {
    name: "2344wd",
  },
  {
    name: "343edwd",
  },
  {
    name: "343wd",
  },
  {
    name: "e2432ew",
  },
  {
    name: "22ewd",
  },
  {
    name: "ewe243",
  },
];
const renderList = ref([]);
const search = ref("");

/**
 * input事件触发
 */
const inputEv = _ =>  renderList.value = filterArr(search.value, data)//开始调用过滤方法

/**
 * 数据过滤器
 * @param {String} filterStr 过滤的字符串
 * @param {Array} arr 查询的数组
 * @returns Array 过滤返回的数组
 */
const filterArr = (filterStr, arr) => {
  // 若传入空值,返回空数组
  if (filterStr === "") return [];

  const fliterData = [];
  arr.forEach((it) => {
    // 正则表达式 -> 相当于 -> /xxxx/.test(it.name) -> xxxx表示动态正则 ↓
    const reg = new RegExp(filterStr, "gi");
    const res = it.name.match(reg); //开始模糊搜索

    // 搜索到,push到fliterData
    if (res !== null) fliterData.push(it);
  });

  // 最后返回过滤的数组
  return fliterData;
};
</script>

效果图

t1

在这里插入图片描述

t2

在这里插入图片描述

t3

在这里插入图片描述

相关推荐

  1. Hive表达式使用

    2024-03-14 12:26:06       44 阅读
  2. 表达式-使用笔记

    2024-03-14 12:26:06       30 阅读
  3. 表达式

    2024-03-14 12:26:06       61 阅读
  4. 表达式

    2024-03-14 12:26:06       72 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 12:26:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 12:26:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 12:26:06       82 阅读
  4. Python语言-面向对象

    2024-03-14 12:26:06       91 阅读

热门阅读

  1. 【Scala】一、Scala 语法基础

    2024-03-14 12:26:06       44 阅读
  2. JVM是如何解决跨代引用的?

    2024-03-14 12:26:06       34 阅读
  3. 【etcd】的限流设计

    2024-03-14 12:26:06       42 阅读
  4. 计算机视觉(CV)技术的优势和挑战

    2024-03-14 12:26:06       37 阅读
  5. vue3路由跳转时,页面如何滚动到顶部

    2024-03-14 12:26:06       42 阅读
  6. cv2.cvtColor()将二维转化为彩色图像

    2024-03-14 12:26:06       43 阅读
  7. 前端面试题 ===> 【Ajax、请求】

    2024-03-14 12:26:06       38 阅读
  8. 防抖与节流

    2024-03-14 12:26:06       39 阅读