当前位置:首页 > 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实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…