JavaScript 中的日期和时间处理:Node.js 从入门到精通

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

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

开始课程

JavaScript 正则表达式入门

正则表达式(regex 或 regexp)是一种基于给定模式搜索、替换和验证字符串的强大工具。在 JavaScript(以及 Node.js)中,它们通过内置的 RegExp 对象实现。

对于初学者来说,正则表达式语法可能看起来令人生畏,但实际上它只是一种描述模式的语言。通过掌握基本结构,你将能够:

  • 验证电子邮件、电话号码、URL
  • 从文本中提取数据(解析)
  • 使用复杂规则替换子字符串
  • 过滤和处理用户输入

在本文中,我们将介绍JavaScript 中的正则表达式及其在 Node.js 上的示例。所有示例都可以在控制台或运行时环境中运行。



在 JS 中创建正则表达式

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

1. 字面量语法(推荐)

const pattern = /hello/;  // 搜索单词 "hello"

模式位于两个斜杠之间。标志可以写在结束斜杠之后(例如,i — 不区分大小写搜索)。



2. RegExp 构造函数

const pattern = new RegExp('hello');  // 等同于 /hello/

当模式是动态的(从变量构建)时使用。



正则表达式标志

  • i — 忽略大小写(/hello/i 会找到 "Hello"、"HELLO")
  • g — 全局搜索(查找所有匹配项,而不仅仅是第一个)
  • m — 多行模式(改变锚点 ^ 和 $ 的行为)
  • s — 点号匹配换行符
  • u — Unicode 支持
  • y — 粘性搜索(仅从 lastIndex 位置搜索)
const regex = /javascript/gi;  // 全局且不区分大小写地搜索 "javascript"


JavaScript 中处理正则表达式的主要方法

我们来看看与正则表达式一起使用的关键方法。



test() — 检查模式

返回 true 或 false。用于验证的最快方法。

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


exec() — 带详细信息的搜索

返回包含匹配项和分组的数组。使用 g 标志时,它会记住位置。

const str = '价格: 100 卢布, 折扣: 20 卢布';const pricePattern = /(\\d+)\\s卢布/g;let match;while ((match = pricePattern.exec(str)) !== null) {  console.log(`找到: ${match[0]}, 数字: ${match[1]}`);}// 输出:// 找到: 100 卢布, 数字: 100// 找到: 20 卢布, 数字: 20


match() — 在字符串中搜索

字符串方法。不使用 g 标志时,返回第一个匹配项(类似于 exec)。使用 g 标志时,返回所有匹配项的数组。

const text = 'JS 是 JavaScript,不要与 Java 混淆。';const jsMatches = text.match(/Java\\w*/g);console.log(jsMatches); // ['JavaScript', 'Java']


replace() — 基于模式的替换

用新字符串替换匹配项。支持特殊字符($1、$&)。

const phone = '+7 (123) 456-78-90';const cleanPhone = phone.replace(/[\\s\\(\\)\\-]/g, '');console.log(cleanPhone); // +71234567890

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


search() — 第一个匹配项的索引

const index = '你好世界'.search(/世界/);console.log(index); // 2

博客

书籍推荐