当前位置:首页 > JavaScript

js实现通配符

2026-04-07 02:16:05JavaScript

通配符匹配的基本概念

通配符匹配通常指使用*(匹配任意数量字符)和?(匹配单个字符)的模式匹配。JavaScript中可通过正则表达式或自定义算法实现类似功能。

使用正则表达式转换

将通配符模式转换为正则表达式是实现匹配的常见方法。例如:

function wildcardToRegex(pattern) {
  const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
  return new RegExp(`^${escaped.replace(/\*/g, '.*').replace(/\?/g, '.')}$`, 'i');
}

// 使用示例
const regex = wildcardToRegex('file*.txt');
regex.test('file123.txt'); // true

递归匹配算法

对于更复杂的场景,可递归实现通配符匹配:

function isMatch(str, pattern) {
  let s = 0, p = 0, starIdx = -1, match = 0;

  while (s < str.length) {
    if (p < pattern.length && (pattern[p] === '?' || pattern[p] === str[s])) {
      s++;
      p++;
    } else if (p < pattern.length && pattern[p] === '*') {
      starIdx = p;
      match = s;
      p++;
    } else if (starIdx !== -1) {
      p = starIdx + 1;
      match++;
      s = match;
    } else {
      return false;
    }
  }

  while (p < pattern.length && pattern[p] === '*') p++;
  return p === pattern.length;
}

性能优化建议

对于高频匹配场景,建议预编译正则表达式。动态生成的模式可通过缓存机制存储已转换的正则对象,避免重复计算。

边界情况处理

需注意空字符串匹配、连续通配符(如)等特殊情况。通常应将连续*视为单个*

function normalizePattern(pattern) {
  return pattern.replace(/\*\*/g, '*');
}

浏览器API替代方案

现代浏览器支持URLPatternAPI(实验性功能),可处理类似通配符的路径匹配:

js实现通配符

const pattern = new URLPattern({ pathname: '/file/*.txt' });
pattern.test({ pathname: '/file/test.txt' }); // true

标签: 通配符js
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…