首頁 > web前端 > js教程 > 如何存取 JavaScript 正規表示式中的匹配組?

如何存取 JavaScript 正規表示式中的匹配組?

Mary-Kate Olsen
發布: 2024-12-29 16:42:18
原創
902 人瀏覽過

How Can I Access Matched Groups in JavaScript Regular Expressions?

存取JavaScript 正規表示式中的符合分組

當使用正規表示式來符合字串中的模式時,通常需要存取字串的特定部分匹配的文字。 JavaScript 提供了多種方法來實現此目的。

在您的範例中,您正確使用了帶括號的正規表示式來捕獲字串的一部分。但是,您遇到的問題不在於正規表示式本身,而是在於您存取匹配組的方式。

使用.exec() 存取組

. exec() 方法傳回一個數組,其中包含整個匹配字串作為第一個元素,後面跟著任何捕獲的組。要存取第一個捕獲組(範例中的「abc」部分),您可以使用arr[1]:

let myString = "something format_abc";
let arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);

console.log(arr[1]); // Prints: abc
登入後複製

使用命名捕獲組

您也可以使用正規表示式語法命名擷取群組,例如(?)。這允許您透過名稱存取捕獲的文字:

let myString = "something format_abc";
let arr = /(?:^|\s)format_(?<text>.*?)(?:\s|$)/.exec(myString);

console.log(arr.groups.text); // Prints: abc
登入後複製

具有命名捕獲組的替代語法:

在 ECMAScript 2018中,您可以使用略有不同的命名捕獲組的語法,將組名稱括在大寫字母中大括號:

let myString = "something format_abc";
let arr = /(?:^|\s)format_({text}.*?)(?:\s|$)/.exec(myString);

console.log(arr.groups.text); // Prints: abc
登入後複製

使用.matchAll() 匹配多個出現

.matchAll() 方法是在ECMAScript 2020 中引入的,並提供了基於迭代器的API符合字串中多次出現的模式。它會傳回一個迭代器,該迭代器為每個匹配生成一個數組形式的匹配結果,您可以存取每個結果中捕獲的組。

要在範例中使用 .matchAll():

let myString = "something format_abc and something format_xyz";
let matches = myString.matchAll(/(?:^|\s)format_(.*?)(?:\s|$)/g);

for (let match of matches) {
  console.log(match[1]); // Prints: abc, then xyz
}
登入後複製

以上是如何存取 JavaScript 正規表示式中的匹配組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板