脚本网 > 网络编程 > JavaScript > TypeScript中正则表达式的用法及实际应用

TypeScript中正则表达式的用法及实际应用

admin JavaScript

前言

正则表达式是处理字符串的强大工具,在 TypeScript/JavaScript 中同样适用。本文将带你全面了解正则表达式在 TS 中的用法,包括基础语法、高级技巧和实际应用场景。

一、正则表达式基础

1. 创建正则表达式

1. 字面量语法

基本语法

const regex = /pattern/flags;
  • pattern: 正则表达式的主体模式
  • flags: 可选的修饰符(如 i, g, m 等)

特点

  1. 在脚本加载时编译(当正则表达式是常量时性能更好)
  2. 更简洁直观的语法
  3. 不需要转义反斜杠(\

2. 构造函数语法

基本语法

const regex = new RegExp('pattern', 'flags');

const regex = new RegExp(/pattern/, 'flags');

特点

  1. 在运行时编译正则表达式
  2. 可以使用变量动态构建正则表达式
  3. 字符串中的反斜杠需要转义(\\
  4. 可以基于已有的正则对象创建新的正则

何时使用哪种方式

  1. 使用字面量语法

    • 正则模式是固定的、已知的

    • 不需要动态构建正则

    • 需要更好的可读性

  2. 使用构造函数语法

    • 需要动态构建正则表达式(如基于用户输入)

    动态构建

    在程序运行时(而非编写代码时)根据需要创建或修改正则表达式模式。

    • 正则模式需要从变量或配置中获取
    • 需要在运行时组合多个正则片段

2. 常用修饰符(flags)

1.i(ignoreCase) - 不区分大小写

作用:使匹配不区分大小写

const regex = /hello/i;

console.log(regex.test('Hello')); // true
console.log(regex.test('HELLO')); // true
console.log(regex.test('hello')); // true
console.log(regex.test('hElLo')); // true

2.g(global) - 全局匹配

作用:查找所有匹配项,而不是在第一个匹配后停止

const str = 'apple, orange, apple, banana';
const regex = /apple/g;

let match;
while ((match = regex.exec(str)) !== null) {
  console.log(`Found '${match[0]}' at index ${match.index}`);
}
// 输出:
// Found 'apple' at index 0
// Found 'apple' at index 15

3.m(multiline) - 多行模式

作用:使 ^$ 匹配每行的开头和结尾,而不是整个字符串的开头和结尾

const multiLineText = `First line
Second line
Third line`;

// 不使用 m 修饰符
console.log(/^Second/.test(multiLineText)); // false
//在整个字符串的开头位置尝试匹配 "Second"

// 使用 m 修饰符
console.log(/^Second/m.test(multiLineText)); // true

4.u(unicode) - Unicode 模式

作用:正确处理大于 \uFFFF 的 Unicode 字符

const emojiText = '