当前位置:首页 > JavaScript

js实现通配符

2026-03-15 08:46:25JavaScript

实现通配符匹配的方法

在JavaScript中实现通配符匹配可以通过正则表达式或自定义函数来完成。以下是几种常见的实现方式:

使用正则表达式转换

将通配符模式转换为正则表达式,例如将*转换为.*,将?转换为.,然后进行匹配。

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

const regex = wildcardToRegex('file*.txt');
console.log(regex.test('file123.txt')); // true

自定义通配符匹配函数

通过逐字符比较实现通配符匹配逻辑,支持*?

function isMatch(str, pattern) {
    let strIndex = 0, patternIndex = 0;
    let starIndex = -1, strTempIndex = -1;

    while (strIndex < str.length) {
        if (patternIndex < pattern.length && 
            (pattern[patternIndex] === '?' || str[strIndex] === pattern[patternIndex])) {
            strIndex++;
            patternIndex++;
        } else if (patternIndex < pattern.length && pattern[patternIndex] === '*') {
            starIndex = patternIndex;
            strTempIndex = strIndex;
            patternIndex++;
        } else if (starIndex !== -1) {
            patternIndex = starIndex + 1;
            strIndex = strTempIndex + 1;
            strTempIndex++;
        } else {
            return false;
        }
    }

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

    return patternIndex === pattern.length;
}

console.log(isMatch('test.txt', '*.txt')); // true

使用第三方库

某些库如minimatch提供了成熟的通配符匹配功能。

js实现通配符

const minimatch = require('minimatch');
console.log(minimatch('file123.txt', 'file*.txt')); // true

注意事项

  • 正则表达式方式需注意特殊字符的转义。
  • 自定义函数需处理边界条件,如空字符串或空模式。
  • 第三方库可能提供更丰富的功能,但会增加依赖。

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

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…