亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在多行上使用JavaScript regex?

如何在多行上使用JavaScript regex?

POPMUISE 2019-06-28 10:43:43
如何在多行上使用JavaScript regex?var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";var arr= ss.match( /<pre.*?<\/pre>/gm );alert(arr);     // null我希望Pre塊被撿起來,盡管它跨越了換行符。我以為是“m”旗做的。不會的。找到答案這里在投遞之前。因為我以為我知道JavaScript(讀了三本書,工作了幾個小時),而且沒有現成的解決方案,所以無論如何我都敢發帖。扔石頭所以解決辦法是:var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";var arr= ss.match( /<pre[\s\S]*?<\/pre>/gm );alert(arr);     // <pre>...</pre> :)有沒有人有一種不那么神秘的方式?編輯:這,這個是一種復制,但由于它比我的更難找到,所以我不會刪除。它提出[^]作為一個“多線點”。我仍然不明白的是為什么[.\n]不起作用。我猜這是JavaScript的一個令人悲傷的部分。
查看完整描述

3 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

[.\n]不起作用是因為.在…里面沒有什么特別的意義[],它只是字面意思.(.|\n)是一種指定“任何字符,包括換行符”的方法。如果要匹配所有換行符,則需要添加\r此外,還包括Windows和經典MacOS風格的行尾:(.|[\r\n]).

事實證明,這有點麻煩,也很慢,(參見KrisWebDev關于細節的答復),所以更好的方法是匹配所有空白字符和所有非空白字符。[\s\S],這將匹配所有的東西,而且更快更簡單。

通常,您不應該嘗試使用regexp來匹配實際的HTML標記。例如,你看,這些 問題有關原因的更多信息。

相反,嘗試在DOM中搜索所需的標記(使用jQuery使這更容易,但始終可以這樣做)。document.getElementsByTagName("pre")使用標準DOM),如果需要與內容匹配,則使用regexp搜索這些結果的文本內容。


查看完整回答
反對 回復 2019-06-28
?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

[.\n]不起作用,因為[](regex定義;而不只是javascript)指點字符。你可以用(.|\n)(或(.|[\n\r]))相反。


查看完整回答
反對 回復 2019-06-28
  • 3 回答
  • 0 關注
  • 760 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號