首頁 >web前端 >js教程 >如何使用正規表示式來尋找字串中的重疊匹配項?

如何使用正規表示式來尋找字串中的重疊匹配項?

Patricia Arquette
Patricia Arquette原創
2024-12-06 05:19:10943瀏覽

How Can I Use Regex to Find Overlapping Matches in a String?

使用正規表示式進行重疊字串比對

在字串「12345」中,套用「.match(/d{3 }/g)」理想情況下應傳回三個符合項:「123」、「234」和「345」。然而,只獲得了一個匹配項(“123”)。

原因:

正規表示式中的全域標誌「g」消耗了三位數字並將索引推進到第一場比賽後的位置。這意味著當正規表示式嘗試匹配下一個子字串時,索引已經位於位置 3,從而有效地跳過剩餘的重疊匹配。

解決方案:零寬度斷言

可以採用零寬度斷言,特別是帶有捕獲組的正向前瞻來匹配輸入字串中的所有位置。此技術涉及:

  • 使用前瞻斷言來測試每個位置。
  • 手動推進 RegExp.lastIndex 屬性以避免無限循環。

JavaScript 範例:

var re = /(?=(\d{3}))/g;
console.log(Array.from('12345'.matchAll(re), x => x[1]));

以上是如何使用正規表示式來尋找字串中的重疊匹配項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn