【JavaScript】正则表达式的基本语法

文章目录

    • [1. 创建正则表达式](#1. 创建正则表达式)
      • [1.1 字面量方式](#1.1 字面量方式)
      • [1.2 构造函数方式](#1.2 构造函数方式)
    • [2. 基本匹配规则](#2. 基本匹配规则)
      • [2.1 普通字符](#2.1 普通字符)
      • [2.2 元字符](#2.2 元字符)
    • [3. 字符类和范围](#3. 字符类和范围)
    • [4. 量词](#4. 量词)
    • [5. 转义字符](#5. 转义字符)
    • [6. 常见正则表达式示例](#6. 常见正则表达式示例)
      • [6.1 匹配Email地址](#6.1 匹配Email地址)
      • [6.2 匹配URL](#6.2 匹配URL)
    • [7. 正则表达式的方法](#7. 正则表达式的方法)
    • [8. 总结](#8. 总结)

正则表达式(RegExp)是一种强大的模式匹配工具,用于在字符串中进行模式搜索、匹配和替换。JavaScript 内置了对正则表达式的支持,本篇博客将介绍 JavaScript 中正则表达式的基本语法,帮助你更好地理解和运用这一强大的特性。

1. 创建正则表达式

在 JavaScript 中,你可以使用字面量方式或 RegExp 构造函数来创建正则表达式。

1.1 字面量方式

javascript 复制代码
const pattern = /pattern/;

1.2 构造函数方式

javascript 复制代码
const pattern = new RegExp('pattern');

2. 基本匹配规则

正则表达式由普通字符和元字符组成,基本匹配规则如下:

2.1 普通字符

普通字符是正则表达式中的字母和数字,它们匹配自身。

javascript 复制代码
const regex = /hello/;
console.log(regex.test('hello world'));  // 输出:true

2.2 元字符

元字符是具有特殊含义的字符,例如:

  • .: 匹配除换行符之外的任意字符
  • ^: 匹配字符串的开始
  • $: 匹配字符串的结束
  • *: 匹配前面的字符零次或多次
  • +: 匹配前面的字符一次或多次
  • ?: 匹配前面的字符零次或一次
  • []: 匹配括号内的任一字符
  • |: 或运算,匹配两者之一
javascript 复制代码
const regex = /^hello/;
console.log(regex.test('hello world'));  // 输出:true

3. 字符类和范围

字符类用于匹配一个字符集合,可以通过[]来定义。

javascript 复制代码
const regex = /[aeiou]/;  // 匹配任一元音字母
console.log(regex.test('hello'));  // 输出:true

范围用于匹配一个字符范围,可以通过-来定义。

javascript 复制代码
const regex = /[a-z]/;  // 匹配任一小写字母
console.log(regex.test('hello'));  // 输出:true

4. 量词

量词用于指定匹配次数,包括:

  • *: 零次或多次
  • +: 一次或多次
  • ?: 零次或一次
  • {n}: 恰好n次
  • {n,}: 至少n次
  • {n,m}: n到m次
javascript 复制代码
const regex = /\d{2,4}/;  // 匹配2到4位数字
console.log(regex.test('123'));  // 输出:true

5. 转义字符

使用\作为转义字符,可以将具有特殊意义的字符变为普通字符。例如,.在正则表达式中匹配任意字符,但如果想匹配实际的句点,需要使用\.

javascript 复制代码
const regex = /\d\.\d/;  // 匹配数字和句点
console.log(regex.test('3.14'));  // 输出:true

6. 常见正则表达式示例

6.1 匹配Email地址

javascript 复制代码
const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
console.log(emailRegex.test('user@example.com'));  // 输出:true

6.2 匹配URL

javascript 复制代码
const urlRegex = /^(https?:\/\/)?([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?$/;
console.log(urlRegex.test('https://www.example.com/path/to/page'));  // 输出:true

7. 正则表达式的方法

JavaScript中正则表达式有很多实用的方法,包括:

  • test(): 测试字符串是否匹配正则表达式
  • exec(): 在字符串中执行正则表达式搜索,返回匹配结果的信息
  • match(): 返回一个包含正则表达式匹配结果的数组
  • search(): 返回字符串中第一个匹配结果的位置
  • replace(): 替换字符串中的匹配项
javascript 复制代码
const regex = /\d+/;
const text = 'There are 123 apples and 456 oranges.';

console.log(regex.test(text));  // 输出:true
console.log(regex.exec(text));  // 输出:[ '123', index: 10, input: 'There are 123 apples and 456 oranges.' ]
console.log(text.match(regex));  // 输出:[ '123', index: 10, input: 'There are 123 apples and 456 oranges.' ]
console.log(text.search(regex));  // 输出:10
console.log(text.replace(regex, 'X'));  // 输出:There are X apples and 456 oranges.

8. 总结

正则表达式是 JavaScript 中强大的模式匹配工具,通过学习正则表达式的基本语法,你可以更灵活地处理字符串。本篇博客深入讨论了正则表达式的创建、基本匹配规则、字符类和范围、量词、转义字符等内容,并通过实例演示了常见正则表达式的应用。希望通过本篇博客,你对 JavaScript 中正则表达式有了更深入的了解,并能更自信地运用正则表达式处理字符串。

相关推荐
微学AI2 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
郭老二2 小时前
【前端】vue3:编译步骤
前端
豆瓣鸡3 小时前
算法日记 - Day3
java·开发语言·算法
不在逃避q3 小时前
Trae/Vs Code/Cursor命令行无法跑npm命令
前端·arcgis·npm
夏殇之殁3 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
韭菜炒鸡肝天3 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
The Chosen One9853 小时前
高进度算法模板速记(待完善)
java·前端·算法
陈随易3 小时前
MoonBit抓包模块pcap,查看电脑的每一次联网通信
前端·后端·程序员
Aaron - Wistron4 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
新中地GIS开发老师4 小时前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发