正規表示式困境:多行文字擷取
在嘗試使用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中文網其他相關文章!