返回

JavaScript 正则表达式 - 终极指南

前端

JavaScript 正则表达式的基本概念

正则表达式是一种特殊字符串,用于匹配或搜索文本中的特定模式。JavaScript 中的正则表达式由 / 符号包裹,例如:

const pattern = /JavaScript/;

正则表达式中的字符可以分为普通字符和特殊字符。普通字符与文本中的普通字符匹配,而特殊字符具有特殊含义。以下是一些常见的正则表达式特殊字符:

  • ^:匹配字符串的开头
  • $:匹配字符串的结尾
  • .:匹配任何单个字符
  • *:匹配前一个元素 0 次或多次
  • +:匹配前一个元素 1 次或多次
  • ?:匹配前一个元素 0 次或 1 次
  • |:匹配多个元素中的一个
  • []:匹配方括号内的任何一个字符
  • ():分组匹配,将匹配到的子串存储为捕获组

JavaScript 正则表达式的语法

JavaScript 正则表达式的语法如下:

/<pattern>/<flags>
  • <pattern>:要匹配的模式
  • <flags>:可用于修改正则表达式行为的标志

常用的标志有:

  • g:全局搜索,匹配所有符合条件的子串,而不是第一个
  • i:不区分大小写
  • m:多行搜索,将 ^$ 视为每行的开头和结尾
  • s:点号匹配任何字符,包括换行符
  • u:Unicode 支持,允许使用 Unicode 代码点表示字符

JavaScript 正则表达式的常见应用

正则表达式在 JavaScript 中有广泛的应用,以下是一些常见的应用场景:

  • 表单验证:使用正则表达式验证用户输入的格式,例如电子邮件地址、电话号码、身份证号码等。
  • 字符串搜索:使用正则表达式在字符串中搜索特定的子串。
  • 字符串替换:使用正则表达式替换字符串中的特定子串。
  • 字符串分割:使用正则表达式将字符串分割成多个子串。
  • 日期格式化:使用正则表达式将日期字符串格式化为特定格式。
  • URL 解析:使用正则表达式解析 URL,提取协议、主机、端口、路径和查询参数等信息。

JavaScript 正则表达式实例

以下是一些 JavaScript 正则表达式实例,展示了如何使用正则表达式来解决实际问题:

// 验证电子邮件地址
const emailPattern = /^[\w-.]+@[\w-]+(\.\w+)+$/;
const email = "example@example.com";
const isValidEmail = emailPattern.test(email);
console.log(isValidEmail); // true

// 提取 URL 中的协议
const urlPattern = /^(https?:\/\/)([^\/]+)(\/?.*)$/;
const url = "https://example.com/path/to/file.html";
const [, protocol, hostname, pathname] = url.match(urlPattern);
console.log(protocol); // https:
console.log(hostname); // example.com
console.log(pathname); // /path/to/file.html

// 替换字符串中的所有数字
const numberPattern = /\d+/g;
const text = "The year is 2023.";
const newText = text.replace(numberPattern, "NUMBER");
console.log(newText); // The year is NUMBER.

// 分割字符串
const csvPattern = /,/g;
const csv = "John,Jane,Jack";
const names = csv.split(csvPattern);
console.log(names); // ["John", "Jane", "Jack"]

// 格式化日期
const datePattern = /(\d{4})-(\d{2})-(\d{2})/;
const date = "2023-03-08";
const formattedDate = date.replace(datePattern, "$3/$2/$1");
console.log(formattedDate); // 08/03/2023

总结

JavaScript 正则表达式是一种强大的工具,可以帮助您轻松地处理文本。通过掌握正则表达式的语法和常见应用场景,您可以提高 JavaScript 开发效率,编写出更健壮、更灵活的代码。