JavaScript 正则表达式入门指南:模式与标志

JavaScript 正则表达式入门指南:模式与标志

en.javascript.info Modern JavaScript Tutorial en.javascript.info 项目地址: https://gitcode.com/gh_mirrors/en/en.javascript.info

正则表达式(Regular Expression)是处理文本搜索和替换的强大工具。在 JavaScript 中,正则表达式通过 RegExp 对象实现,并与字符串方法深度集成。

正则表达式基础概念

正则表达式由模式(pattern)和可选的标志(flags)组成。模式定义了我们要查找的内容,而标志则控制搜索的行为方式。

两种创建方式

JavaScript 提供了两种创建正则表达式的方式:

  1. 构造函数语法(动态创建):
let regexp = new RegExp("pattern", "flags");
  1. 字面量语法(静态创建):
let regexp = /pattern/;      // 无标志
let regexp = /pattern/gmi;   // 带g、m、i标志

关键区别

  • 字面量语法使用斜杠/.../包裹,类似于字符串的引号
  • 字面量语法在编写代码时就必须确定内容,不能插入变量
  • 构造函数语法可以在运行时动态生成正则表达式

六大标志详解

JavaScript 正则表达式支持6种标志,它们可以单独或组合使用:

  1. i - 不区分大小写

    /hello/i.test("Hello")  // true
    
  2. g - 全局匹配(查找所有匹配项而非第一个)

    "a a a".match(/a/g)  // ["a", "a", "a"]
    
  3. m - 多行模式(使^$匹配每行的开头和结尾)

  4. s - dotAll模式(使.匹配包括换行符在内的所有字符)

  5. u - 完整Unicode支持(正确处理代理对和Unicode字符)

  6. y - 粘性模式(从上次匹配结束的位置开始匹配)

常用正则表达式方法

1. str.match(regexp) - 搜索匹配项

根据是否使用g标志,返回不同结果:

let str = "Hello hello";

// 有g标志 - 返回所有匹配数组
str.match(/hello/gi);  // ["Hello", "hello"]

// 无g标志 - 返回第一个匹配的详细信息
let result = str.match(/hello/i);
/*
result包含:
[
  0: "Hello",       // 匹配文本
  index: 0,         // 匹配位置
  input: str,       // 原始字符串
  groups: undefined // 命名捕获组
]
*/

重要注意点:当没有匹配时返回null而非空数组,处理结果时需特别注意:

// 安全处理方式
let matches = str.match(/not-exist/) || [];

2. str.replace(regexp, replacement) - 替换文本

"JavaScript".replace(/java/i, "Type")  // "TypeScript"

替换字符串中可以使用特殊变量:

  • $& - 插入整个匹配项
  • $` - 插入匹配项前的文本
  • $' - 插入匹配项后的文本
  • $1, $2 - 插入捕获组内容

3. regexp.test(str) - 测试是否匹配

/hello/i.test("Hello World")  // true

实际应用技巧

  1. 动态创建正则表达式
let userInput = prompt("输入搜索词", "example");
let regexp = new RegExp(userInput, "gi");
  1. 转义特殊字符
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
  1. 常见验证模式
// 邮箱验证
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;

// 手机号验证
const phoneRegex = /^1[3-9]\d{9}$/;

总结

正则表达式是JavaScript中强大的文本处理工具,掌握它可以:

  • 高效验证输入格式
  • 快速提取文本信息
  • 灵活替换文本内容
  • 实现复杂的搜索功能

初学者建议从简单的模式匹配开始,逐步学习更复杂的特性如捕获组、量词和断言等。记住正则表达式虽然强大,但复杂的模式可能难以维护,在可读性和性能之间需要做好平衡。

en.javascript.info Modern JavaScript Tutorial en.javascript.info 项目地址: https://gitcode.com/gh_mirrors/en/en.javascript.info

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邬千旻Herman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值