导航
×
   ❮   
HTML CSS JavaScript PHP Go ECMS

JavaScript 教程

JS 简介 JS 如何使用 JS 输出 JS 语法 JS 语句 JS 注释 JS 变量 JS 运算符 JS 条件语句 JS 循环 JS 字符串 JS 数字 JS 函数 JS 对象 JS 日期 JS 数组 JS 类型化数组 JS 集合 JS Map 映射 JS Math JS 正则表达式 JS 数据类型 JS 错误 JS 事件 JS 编程 JS 关键字参考 JS 保留关键字参考 JS 运算符参考 JS 运算符优先级 JS UTF-8 字符 JS UTF-8 符号 JS UTF-8 表情符号 JS 版本

JavaScript RegExp Assertions 正则表达式断言


正则表达式断言

断言匹配边界环视:

字符串边界和单词边界。

环视:前瞻和后瞻。

// 匹配字符串开头
const pattern = /^FreeW3C/;

// 匹配字符串结尾
const pattern = /FreeW3C$/;

JavaScript 正则表达式断言

修订于 2025 年 7 月

语法 名称 描述
^ 字符串边界 匹配字符串的开头
$ 字符串边界 匹配字符串的结尾
\b 单词边界 匹配单词的开头或结尾
\B 词边界 不匹配单词的开头或结尾
(?=...) 前瞻 匹配后续字符串
(?!...) 前瞻 不匹配后续字符串
(?<=...) 后瞻 匹配前一个字符串
(?<!...) 后瞻 不匹配前一个字符串

正则表达式 ^ 元字符

^ 元字符匹配字符串的开头。

示例

测试字符串是否以 FreeW3C 开头:

const pattern = /^FreeW3C/;
let text = "FreeW3C Tutorial";

let result = pattern.test(text); // true

亲自试一试 »

const pattern = /^FreeW3C/;
let text = "Hello FreeW3C";

let result = pattern.test(text); // false

亲自试一试 »


正则表达式 $ 元字符

$ 元字符匹配字符串的结尾。

测试字符串是否以 FreeW3C 结尾:

const pattern = /FreeW3C$/;
let text = "Hello FreeW3C";

let result = pattern.test(text); // true
亲自试一试 »
const pattern = /FreeW3C$/;
let text = "FreeW3C tutorial";

let result = pattern.test(text); // false
亲自试一试 »

\b 元字符

\b 元字符匹配单词的开头或结尾。

示例

在单词的开头查找字符"LO":

let text = "HELLO, LOOK AT YOU!";

 let result = text.search(/\bLO/);

亲自试一试 »

查找单词末尾的字符"LO":

let text = "HELLO, LOOK AT YOU!";

 let result = text.search(/LO\b/);

亲自试一试 »


正则表达式前瞻 x(?=y)

如果 "x" 后面跟着 "y",则 x(?=y) 匹配 "x"。

示例

如果 "FreeW3C" 后面跟着 "Tutorials",则匹配 "FreeW3C"。

let text = "FreeW3C Tutorials";
let pattern = /FreeW3C(?= Tutorials)/;

let result = pattern.test(text);
亲自试一试 »

负向前瞻 x(?!y)

如果 "x" 后面没有 "y",则 x(?!y) 匹配 "x"。

示例

let text = "Hello FreeW3C";

let pattern = /FreeW3C(?!Hello )/;
let result = pattern.test(text);
亲自试一试 »

正则表达式后行断言 (?<=y)x

(?<=y)x 匹配 "x",前提是 "x" 前面有 "y"。

示例

匹配 "FreeW3C",前提是 "FreeW3C" 前面有 "Hello"。

let text = "Hello FreeW3C";
let pattern = /(?<=Hello )FreeW3C/;

let result = pattern.test(text);
亲自试一试 »

否定后行断言 (?<!y)x

(?<!y)x 仅当"x"前面没有"y"时才匹配"x"。

示例

let text = "Hello FreeW3C";

let pattern = /(?<!Hello ) FreeW3C/;
let result = pattern.test(text);
亲自试一试 »

正则表达式组

字符 描述
(x) 匹配 x 并保存
(?<n>x) 匹配 x 并将其标记为 n
(?flag:x) 为 x 启用标志
(?flag-flag:x) 为 x 禁用标志

正则表达式捕获组 (x)

示例

let text = "Haha, haha, haha.";
const pattern = /(haha)+/;

let result = text.match(pattern);
亲自试一试 »

解释

  • (haha) 捕获一组字符
  • (haha)+ 匹配零个或多个该组字符
  • text.match() 返回一个结果数组
  • match.groups() 返回一个匹配项数组

命名捕获组 (?)

示例

const text = "Name: John Doe";

// 使用命名捕获组
const regex = /(?<firstName>\w+) (?<lastName>\w+)/;
const match = text.match(regex);

let fName = match.groups.firstName;
let lName = match.groups.lastName;
亲自试一试 »

解释

  • (?\w+) 捕获一个单词并将其标记为 firstName
  • (?\w+) 执行相同的操作,将 lastName 标记为 firstName
  • text.match() 返回一个包含 groups 属性的数组
  • match.groups() 返回一个对象:
    {firstName:"John", lastName:"Doe" }

使用捕获组时,字符串方法 match() 和正则表达式方法 exec() 会返回一个带有 groups 属性的匹配对象。此属性保存组的名称和值。


正则表达式分组修饰符 (?flag)

(?flag) 语法是一种分组修饰符(内联标志修饰符)。

它允许修改模式中某个部分的标志,而不是整个模式。

(?flags:pattern) 仅对组中的模式启用标志。

示例

i 标志仅对模式中的 FreeW3C 部分启用。

let text = "FreeW3C tutorials.";
const pattern = /(?i:FreeW3C) tutorials/;

// 返回 true:
let result = pattern.test(text);
亲自试一试 »

i 标志仅对模式中的 FreeW3C 部分启用。

let text = "FreeW3C Tutorials.";
const pattern = /(?i:FreeW3C) tutorials/;

// 返回 false:
let result = pattern.test(text);
亲自试一试 »


正则表达式方法

正则表达式的搜索替换可以使用不同的方法。

以下是最常用的方法:

字符串方法

方法 描述
match(regex) 返回结果数组
matchAll(regex) 返回结果迭代器
replace(regex) 返回一个新的字符串
replaceAll(regex) 返回一个新的字符串
search(regex) 返回第一个匹配项的索引
split(regex) 返回一个结果数组

正则表达式方法

方法 描述
regex.exec() 返回结果迭代器
regex.test() 返回 true 或 false

freew3c.com 中文网是独立运营的中文开发者学习平台,与 freew3c.com 无关联。提供的内容仅用于学习和测试,不保证内容的正确性。


Copyright @2020-2026 京ICP备888888号-8