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

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

JavaScript regex多行標記不起作用

JavaScript regex多行標記不起作用

ABOUTYOU 2019-07-04 15:18:55
JavaScript regex多行標記不起作用我編寫了一個regex從html中獲取字符串,但多行標志似乎不起作用。這是我的模式,我想得到H1標簽中的文本。var pattern= /<div class="box-content-5">.*<h1>([^<]+?)<\/h1>/mi m = html.search(pattern);return m[1];我創建了一個字符串來測試它。當字符串包含“\n”時,結果總是為空。如果我刪除所有的“\n”,它給了我正確的結果,無論是否有/m標志。我的大梁怎么了?
查看完整描述

3 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

你在找/.../s修飾符,也稱為多特改性劑。它會迫使點.來匹配換行符,不做默認情況下。

好消息是您可以通過使用字符類來繞過它。\s)及其否定(\S)在一起,就像這樣:

[\s\S]

所以在你的例子中,regex會變成:

/<div class="box-content-5">[\s\S]*<h1>([^<]+?)<\/h1>/i

從ES 2018開始,JavaScript支持s(DotAll)標志,因此在現代環境中,您的正則表達式可以像您所寫的那樣,但是使用s標志在末尾(而不是mm變法^$工作,而不是.):

/<div class="box-content-5">.*<h1>([^<]+?)<\/h1>/is


查看完整回答
反對 回復 2019-07-04
?
米脂

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

你想要s(Doall)修飾符,它顯然不存在于Javascript中-您可以替換.與@Molf建議的[\s\S]一起使用。這個m(多行)修飾符使^和$匹配行,而不是整個字符串。


查看完整回答
反對 回復 2019-07-04
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

[\s\S]在NodeJS 6.11.3沒有為我工作?;?/trans>RegExp文檔,它說要用[^]這對我確實有用。

(小數點)匹配除行結束符以外的任何單個字符:\n、\r、\u 2028或\u 2029。

在一個字符集中,這個點失去了它的特殊意義,并匹配一個文字點。

注意,m多行標志不會改變點的行為。因此,要匹配跨越多行的模式,可以使用字符集[^](當然,如果不是指舊版本的IE),它將匹配任何字符,包括換行符。

例如:

/This is on line 1[^]*?This is on line 3/m

在哪里*?是0或更多次出現的[^]的非貪婪抓取。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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