当前位置:首页 > JavaScript

js实现匹配

2026-03-15 06:03:30JavaScript

正则表达式匹配

使用JavaScript的RegExp对象进行字符串匹配。通过test()方法检查字符串是否匹配模式,或使用exec()获取匹配细节。

const regex = /hello/i;
const str = 'Hello, world!';
console.log(regex.test(str)); // true

字符串方法匹配

JavaScript内置字符串方法如includes()indexOf()match()可直接进行基础匹配。

const str = 'Find the substring';
console.log(str.includes('sub')); // true
console.log(str.indexOf('the') !== -1); // true

模糊匹配算法

实现Levenshtein距离算法进行相似度匹配,适用于拼写纠错等场景。

function levenshtein(a, b) {
  const matrix = Array(b.length + 1).fill(null).map(() => 
    Array(a.length + 1).fill(null));
  for (let i = 0; i <= a.length; i++) matrix[0][i] = i;
  for (let j = 0; j <= b.length; j++) matrix[j][0] = j;
  for (let j = 1; j <= b.length; j++) {
    for (let i = 1; i <= a.length; i++) {
      const cost = a[i-1] === b[j-1] ? 0 : 1;
      matrix[j][i] = Math.min(
        matrix[j][i-1] + 1,
        matrix[j-1][i] + 1,
        matrix[j-1][i-1] + cost
      );
    }
  }
  return matrix[b.length][a.length];
}

模式匹配库

使用第三方库如minimatch进行glob模式匹配,或fuse.js实现模糊搜索。

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

const fuse = new Fuse(['apple', 'banana'], { threshold: 0.3 });
console.log(fuse.search('app')); // 返回匹配结果

高级正则技巧

利用正则表达式的捕获组、前瞻后顾等特性实现复杂匹配逻辑。

js实现匹配

// 提取日期
const dateRegex = /(\d{4})-(\d{2})-(\d{2})/;
const dateMatch = '2023-05-15'.match(dateRegex);
console.log(dateMatch.slice(1)); // ['2023', '05', '15']

// 密码强度验证
const passwordRegex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$/;
console.log(passwordRegex.test('Pass1234')); // true

标签: js
分享给朋友:

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现复制到剪贴板

js实现复制到剪贴板

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

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现自举

js实现自举

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

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…