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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-10 01:36:021004瀏覽

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中文網其他相關文章!

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