跳到主要内容

Eureka 正则表达式

正则表达式(Regular Expression,简称 regex)是一种强大的工具,用于匹配、查找和操作文本中的模式。无论你是处理日志文件、验证用户输入,还是从文本中提取数据,正则表达式都能帮助你高效完成任务。本文将带你从基础开始,逐步掌握正则表达式的核心概念和应用。

什么是正则表达式?

正则表达式是一种描述字符串模式的语法。它由一系列字符和特殊符号组成,用于定义搜索模式。通过正则表达式,你可以快速检查一个字符串是否符合某种格式,或者从文本中提取特定部分。

例如,如果你想验证一个字符串是否是有效的电子邮件地址,可以使用正则表达式来匹配电子邮件地址的模式。

正则表达式的基本语法

1. 字面字符

最简单的正则表达式就是字面字符。例如,正则表达式 hello 会匹配字符串中的 hello

javascript
const regex = /hello/;
console.log(regex.test("hello world")); // true
console.log(regex.test("hi there")); // false

2. 特殊字符

正则表达式中有一些特殊字符,称为 元字符,它们具有特殊的含义。以下是一些常见的元字符:

  • .:匹配任意单个字符(除了换行符)。
  • *:匹配前面的字符零次或多次。
  • +:匹配前面的字符一次或多次。
  • ?:匹配前面的字符零次或一次。
  • \d:匹配任意数字(等价于 [0-9])。
  • \w:匹配任意字母、数字或下划线(等价于 [a-zA-Z0-9_])。
  • \s:匹配任意空白字符(包括空格、制表符、换行符等)。
javascript
const regex = /\d+/;
console.log(regex.test("123")); // true
console.log(regex.test("abc")); // false

3. 字符集

字符集用于匹配一组字符中的任意一个。例如,[aeiou] 会匹配任意一个元音字母。

javascript
const regex = /[aeiou]/;
console.log(regex.test("apple")); // true
console.log(regex.test("xyz")); // false

4. 量词

量词用于指定匹配的次数。例如,a{2,4} 会匹配 aaaaaaaaa

javascript
const regex = /a{2,4}/;
console.log(regex.test("aa")); // true
console.log(regex.test("aaaaa")); // false(超过4个a)

5. 分组和捕获

使用括号 () 可以将多个字符组合在一起,并捕获匹配的内容。例如,(ab)+ 会匹配 ababab 等。

javascript
const regex = /(ab)+/;
console.log(regex.test("abab")); // true
console.log(regex.test("aabb")); // false

实际应用案例

1. 验证电子邮件地址

以下是一个简单的正则表达式,用于验证电子邮件地址:

javascript
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test("[email protected]")); // true
console.log(emailRegex.test("invalid-email")); // false

2. 提取日期

假设你有一个字符串 "Today is 2023-10-05",你可以使用正则表达式提取日期:

javascript
const dateRegex = /\d{4}-\d{2}-\d{2}/;
const match = "Today is 2023-10-05".match(dateRegex);
console.log(match[0]); // 2023-10-05

3. 替换文本

你可以使用正则表达式替换文本中的特定部分。例如,将字符串中的所有数字替换为 #

javascript
const text = "My phone number is 123-456-7890.";
const replacedText = text.replace(/\d/g, "#");
console.log(replacedText); // My phone number is ###-###-####.

总结

正则表达式是一种强大的工具,可以帮助你高效处理文本数据。通过掌握基本语法和常见应用场景,你可以在编程中轻松应对各种字符串处理任务。

提示

正则表达式的学习需要多练习。尝试编写一些正则表达式来解决实际问题,例如验证电话号码、提取URL等。

附加资源

练习

  1. 编写一个正则表达式,验证一个字符串是否是有效的手机号码(假设手机号码为11位数字)。
  2. 编写一个正则表达式,从字符串 "Price: $19.99" 中提取价格部分。
  3. 使用正则表达式将字符串 "Hello, World!" 中的所有字母转换为大写。