面向初学者的 JavaScript 正则表达式示例

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

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

开始课程

JavaScript 正则表达式简介

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

对于初学者来说,regex 的语法可能看起来令人生畏,但实际上它只是一种描述模式的语言。掌握了基本结构后,您将能够:

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

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



在 JS 中创建正则表达式

在 JavaScript 中有两种创建 regex 的方法:

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 中 regex 的主要方法

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



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 = 'Hello world'.search(/world/);console.log(index); // 6                

博客

书籍推荐