JavaScript正则表达式及Node.js示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

JavaScript 中的正则表达式及 Node.js 示例



正则表达式(regex 或 regexp)是用于搜索、替换和提取文本信息的强大工具。在 JavaScript 和 Node.js 中,它们被广泛使用:从表单验证到日志解析和请求处理。本文将通过实际示例帮助您掌握正则表达式的语法,这些示例可以直接在 Node.js 中运行。



1. 在 JavaScript 中创建正则表达式



在 JavaScript 中,有两种创建正则表达式的方法:



  • 字面量语法 — 模式包含在斜杠中 /pattern/flags。推荐用于静态模式。
  • RegExp 构造函数 — new RegExp('pattern', 'flags')。用于动态构建模式的情况。


// 字面量方式const regexLiteral = /hello/i;

// RegExp 构造函数const pattern = 'hello';const regexConstructor = new RegExp(pattern, 'i');

console.log(regexLiteral.test('Hello World')); // trueconsole.log(regexConstructor.test('Hello World')); // true


2. 正则表达式的基本方法



在 Node.js 和浏览器中,有四个关键方法可用于处理 regex。让我们通过示例逐一了解。



test() 方法

检查字符串是否包含与模式的匹配项。返回 true 或 false。



const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;console.log(emailPattern.test('user@example.com')); // trueconsole.log(emailPattern.test('invalid-email')); // false


exec() 方法

查找匹配项并返回一个包含详细信息的数组(匹配项本身、分组、索引、输入字符串)。如果没有匹配项,则返回 null。



const text = '价格: 1500 卢布, 折扣: 300 卢布';const regex = /(\\d+)\\s卢布/g;let match;

while ((match = regex.exec(text)) !== null) { console.log(`找到: ${match[1]} 卢布`); // 输出: "找到: 1500 卢布" // 输出: "找到: 300 卢布"}


match() 方法

在字符串上调用。返回匹配项数组(带 g 标志)或详细信息(不带 g 标志)。



const logLine = '错误 404: 页面未找到';const errorRegex = /(\\d{3}):\\s(.+)/;const result = logLine.match(errorRegex);

console.log(result[0]); // '404: 页面未找到'console.log(result[1]); // '404'console.log(result[2]); // '页面未找到'


replace() 方法

将匹配项替换为指定的字符串或函数的结果。非常适合数据格式化。



const phone = '+7 (999) 123-45-67';const cleanPhone = phone.replace(/[\\s\\-\\(\\)\\+]/g, '');console.log(cleanPhone); // '79991234567'

// 使用分组进行替换const date = '2024-01-15';const formattedDate = date.replace(/(\\d{4})-(\\d{2})-(\\d{2})/, '$3.$2.$1');console.log(formattedDate); // '15.01.2024'


3. 正则表达式的基本符号和标志



为了有效使用 regex,需要理解基本的元字符和标志。以下是其中的关键部分:



搜索符号

  • . — 任意字符(除换行符外)
  • \\d — 数字 (0-9)
  • \\w — 字母、数字或下划线
  • \\s — 空白字符
  • ^ — 字符串开头
  • $ — 字符串结尾
  • * — 0 次或多次重复
  • + — 1 次或多次重复
  • ? — 0 次或 1 次重复
  • {n,m} — 从 n 到 m 次重复


标志

  • g — 全局搜索(所有匹配项)

博客

书籍推荐