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:根据正则分割字符串。
相关推荐
fouryears_234177 分钟前
现代 Android 后台应用读取剪贴板最佳实践
android·前端·flutter·dart
boolean的主人11 分钟前
mac电脑安装nvm
前端
用户19729591889115 分钟前
WKWebView的重定向(objective_c)
前端·ios
烟袅19 分钟前
5 分钟把 Coze 智能体嵌入网页:原生 JS + Vite 极简方案
前端·javascript·llm
18你磊哥20 分钟前
Django WEB 简单项目创建与结构讲解
前端·python·django·sqlite
KangJX21 分钟前
iOS 语音房(拍卖房)开发实践
前端·前端框架·客户端
神秘的猪头42 分钟前
🧠 深入理解 JavaScript Promise 与 `Promise.all`:从原型链到异步编程实战
前端·javascript·面试
白兰地空瓶43 分钟前
从「似懂非懂」到「了如指掌」:Promise 与原型链全维度拆解
前端·javascript
麦麦在写代码44 分钟前
前端学习5
前端·学习
YF02111 小时前
Frida for MacBook/Android 安装配置
android·前端