js基础回顾 replace 和 正则

replace 方法的参数

String.prototype.replace 方法用于替换字符串中的匹配内容。它可以接收两个参数:

  1. 第一个参数:匹配模式

    • 可以是一个字符串:直接匹配该字符串。
    • 可以是一个正则表达式:匹配符合正则表达式的内容。
  2. 第二个参数:替换内容

    • 可以是一个字符串:用于替换匹配到的内容。
    • 可以是一个回调函数:动态生成替换内容。

示例

javascript 复制代码
// 使用字符串作为匹配模式

console.log('hello world'.replace('world', 'JavaScript')); 

// 输出: "hello JavaScript"

// 使用正则表达式作为匹配模式

console.log('hello world'.replace(/world/, 'JavaScript')); 

// 输出: "hello JavaScript"

// 使用回调函数作为替换内容

console.log('hello world'.replace(/(world)/, (match) => match.toUpperCase())); 

// 输出: "hello WORLD"

replace 回调函数的参数

replace 的第二个参数是回调函数时,回调函数会接收以下参数:

  1. match:匹配到的子字符串。
  2. p1, p2, ... :正则表达式中的捕获组(如果有)。
  3. offset:匹配到的子字符串在原字符串中的索引。
  4. string:被匹配的原字符串。

示例

typescript 复制代码
const str = 'color: red; backgroundColor: blue;';

const result = str.replace(/([A-Z])/g, (match, p1, offset, string) => {

    console.log(`Match: ${match}, Captured: ${p1}, Offset: ${offset}, String: ${string}`);

    return `-${p1.toLowerCase()}`;

});

console.log(result);

// 输出:

// Match: C, Captured: C, Offset: 13, String: color: red; backgroundColor: blue;

// color: red; background-color: blue;

正则校验的几个方法

正则表达式在 JavaScript 中有多种方法可以用来匹配和操作字符串:

  1. test

    • 用于测试字符串是否匹配正则表达式。
    • 返回布尔值。
javascript 复制代码
    const regex = /hello/;

    console.log(regex.test('hello world')); // true
  1. exec

    • 用于匹配字符串,返回第一个匹配结果的详细信息(数组形式)。
    • 如果没有匹配到,返回 null
javascript 复制代码
    const regex = /hello/;
    
    console.log(regex.exec('hello world')); 
    // ["hello", index: 0, input: "hello world"]
  1. match

    • 用于从字符串中提取匹配结果。
    • 返回一个数组,包含所有匹配的内容。
python 复制代码
    const str = 'hello world';

    console.log(str.match(/hello/)); // ["hello", index: 0, input: "hello world"]
  1. replace

    • 用于替换匹配的内容。
    • 返回替换后的新字符串。
javascript 复制代码
    const str = 'hello world';

    console.log(str.replace(/world/, 'JavaScript')); // "hello JavaScript"
  1. split

    • 用于根据正则表达式分割字符串。
    • 返回一个数组。
javascript 复制代码
    const str = 'hello world';

    console.log(str.split(/\s/)); // ["hello", "world"]

区别总结

  • test:快速判断是否匹配,返回布尔值。
  • exec:获取匹配的详细信息,适合需要捕获组的场景。
  • match:从字符串中提取匹配内容,适合简单提取。
  • replace:替换匹配内容,支持动态替换。
  • split:根据正则分割字符串。
相关推荐
namexingyun11 小时前
开源前端生态如何成为 AI UI 生成的“燃料“:shadcn/ui、Tailwind CSS、Storybook 技术价值全解剖
java·前端·人工智能·python·ui·开源·ai编程
Zyed11 小时前
[STM32]Day15读写FLASH+读取ID
前端·stm32·性能优化
jvxiao12 小时前
你真的懂作用域吗?从编译原理角度深度 JS 的作用域
前端·javascript
Darling噜啦啦12 小时前
二叉树与递归算法实战:从树结构到 LeetCode 爬楼梯,一文吃透前端数据结构与递归思维
前端·javascript·数据结构
星栈12 小时前
Rust + Makepad 应用怎么打包发布:Windows、macOS、Linux 全平台交付
前端·rust
Aolith12 小时前
React 路由守卫:我用一个组件替代了 Vue 的 beforeEach
前端·react.js
Daybreak12 小时前
从 PDD、DDD、SDD 到 TDD:我是如何用一套 Agent 工程方法论推进 My-Notion 的
前端
HjhIron13 小时前
从零实现一个待办事项应用:前端必学的Ajax与Node.js实战
前端·后端
yingyima13 小时前
JavaScript 正则表达式:从零开始的实战对比
前端
Sammyyyyy13 小时前
月之暗面 Kimi Code 0.4.0 发布,终端 AI 编码助手全面采用 TypeScript,实现毫秒级启动
前端·javascript·人工智能·ai·typescript·servbay