JavaScript 正则表达式:入门指南162


正则表达式(Regular Expressions,简称 Regex)是一种强大的工具,用于在文本中查找、匹配和处理模式。JavaScript 提供了 RegExp 对象,使开发者能够轻松使用正则表达式。本文将深入探讨 JavaScript 中正则表达式的使用方法,从基本语法到高级技术。

创建正则表达式对象

要创建一个正则表达式对象,可以使用 RegExp 构造函数或正则表达式字面量。RegExp 构造函数采用两个参数:一个模式字符串和一个可选的标志字符串。正则表达式字面量使用斜杠(/)将模式字符串包裹起来,并可以省略标志字符串。```javascript
// 使用 RegExp 构造函数
const re1 = new RegExp("pattern", "flags");
// 使用正则表达式字面量
const re2 = /pattern/flags;
```

模式语法

正则表达式模式字符串由普通字符和特殊字符(元字符)组成。普通字符直接匹配其自身,而元字符具有特殊含义,用于定义模式匹配行为。

常用元字符



. 匹配任意单个字符
\d 匹配数字
\w 匹配字母、下划线或数字
\s 匹配空白字符(空格、制表符、换行符)
\b 匹配单词边界
^ 匹配字符串的开头
$ 匹配字符串的结尾

字符类


字符类用于匹配一组字符。格式为 [start-end],其中 start 和 end 指定字符范围。例如,[a-z] 匹配小写字母。

量词


量词用于指定字符或模式的重复次数。常用量词有:
? 匹配零次或一次
* 匹配零次或多次
+ 匹配一次或多次
{n} 匹配 n 次
{n,m} 匹配 n 到 m 次


组用于捕获匹配模式的子字符串。使用圆括号 () 定义组。捕获的子字符串可以通过其索引从 RegExp 对象中访问。```javascript
const re = /([a-z]+)\s([0-9]+)/;
const str = "name 123";
const [, firstName, lastName] = (re);
```

搜索方法

RegExp 对象提供了几个方法来搜索和操作文本:

test()


test() 方法测试是否在字符串中匹配模式。如果匹配,则返回 true,否则返回 false。

exec()


exec() 方法在字符串中搜索模式的第一个匹配项。如果匹配,则返回一个包含匹配信息的数组,否则返回 null。

match()


match() 方法在字符串中搜索模式的所有匹配项。如果找到任何匹配项,则返回一个包含所有匹配数组的数组,否则返回 null。

replace()


replace() 方法将字符串中的匹配项替换为指定内容。第一个参数指定要搜索的模式,第二个参数指定替换文本。

标志

标志字符串用于修改正则表达式搜索行为。常用标志包括:
g 全局搜索(匹配所有匹配项)
i 忽略大小写
m 多行模式(^ 和 $ 匹配每行的开头和结尾)
s 点号匹配换行符
u Unicode 模式(处理 Unicode 字符)
y 粘性模式(从上次匹配结束的地方开始搜索)

示例

以下是一些使用 JavaScript 正则表达式的示例:

验证电子邮件


```javascript
const emailRegex = /^.+@.+\..+$/;
const email = "example@";
const isValid = (email);
```

提取 URL 中的域名


```javascript
const urlRegex = /^(?:http(s)?:/\/)?[\w.-]+(?:.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/;
const url = "/path/to/file";
const domain = (urlRegex)[1];
```

解析 JSON 字符串


```javascript
const jsonString = '{"name": "John Doe", "age": 30}';
const jsonRegex = /^{.*}$/;
const isValidJson = (jsonString);
```

JavaScript 正则表达式是一种强大的工具,用于在文本中查找、匹配和处理模式。通过了解其语法、搜索方法和标志,开发者可以使用正则表达式有效地操作字符串数据。掌握 JavaScript 正则表达式将极大地提高代码的可读性、可维护性和效率。

2025-02-07


上一篇:JavaScript 正则表达式:从基础到高级替换技巧

下一篇:如何在 JavaScript 中快速找到字符串中的字符