簡體   English   中英

跳過正則表達式html中的標簽和空格

[英]Skipping over tags and spaces in regex html

我正在使用此正則表達式查找一個以!?開頭,以?!結尾的字符串,並且中間還有另一個變量(在此示例中為“ a891d050”)。 這是我用的:

var pattern = new RegExp(/!\\?.*\s*(a891d050){1}.*\s*\\?!/);

它正確地匹配了這個:

!?v8qbQ5LZDnFLsny7VmVe09HJFL1/WfGD2A:::a891d050?! 

但是當用html標簽將字符串分解時失敗。

<span class="userContent"><span>!?v8qbQ5LZDnFLsny7VmVe09HJFL1/</span><wbr /><span class="word_break"></span>WfGD2A:::a891d050?!</span></div></div></div></div>

我嘗試添加\\ s{space} * ,但是仍然失敗。 問題是,如果我想忽略比賽中的空白和html標簽,我需要考慮哪些(特殊?)字符。

編輯:這就是我使用正則表達式的方式:

var pattern = /!\?[\s\S]*a891d050[\s\S]*\?!/;

document.body.innerHTML = document.body.innerHTML.replace(pattern,"new content");

在我看來,當它遇到替換為'plain'的字符串時,它是正確的。 但是,當面對String及其周圍和內部的類時,它會使這些類弄亂, 或者完全不能根據上下文替換。 因此,我決定嘗試使用jquery-replacetext-plugin (因為它保證將標簽保持原樣)是這樣的:

$("body *").replaceText( pattern, "new content" );

但是沒有成功,結果與以前相同。

也許這樣:

var pattern = /!\?[\s\S]*a891d050[\s\S]*\?!/;

[\\ s \\ S]應該與任何字符匹配。 我還刪除了{1}。

使用此正則表達式顯然可以解決該問題:

var pattern = /(!\?)(?:<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])*?>)?(.)*?(a891d050)(?:<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])*?>)?(.)*?(\?!)/;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM