当前位置:首页 > 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实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…