首頁 > web前端 > js教程 > 為什麼 JavaScript 正規表示式無法提取帶有「m」標誌的多行文字?

為什麼 JavaScript 正規表示式無法提取帶有「m」標誌的多行文字?

Mary-Kate Olsen
發布: 2024-11-10 01:36:02
原創
1035 人瀏覽過

Why Does JavaScript Regex Fail to Extract Multiline Text with the 'm' Flag?

正規表示式困境:多行文字擷取

在嘗試使用JavaScript 正規表示式從HTML 擷取文字時,開發人員遇到了一個意想不到的障礙:多行標誌(m) 在捕獲多行文字方面似乎無效。

提供的正規表示式模式旨在提取 h1 標記內包含的文字:

var pattern = /<div>
登入後複製

但是,當 HTML 字串包含換行符號時(n),結果總是為空。刪除換行符號解決了問題,無論是否存在 m 標誌。

解決方案:Dotall 修飾符

罪魁禍首在於缺少 dotall 修飾符JavaScript。預設情況下,點 (.) 會匹配除換行符之外的任何字元。為了克服此限制,可以採用涉及字符類及其否定的解決方法:

[\s\S]
登入後複製

此字符類匹配任何字符,包括換行符和其他空格。合併到正規表示式中,它會產生:

/<div>
登入後複製
登入後複製

帶有DotAll 標誌的現代解決方案

從ES2018 開始,JavaScript 支援s (Alldot)標誌。此標誌明確指示正規表示式引擎允許點數匹配換行符,因此無需解決方法:

/<div>
登入後複製
登入後複製

以上是為什麼 JavaScript 正規表示式無法提取帶有「m」標誌的多行文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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