簡體   English   中英

如何在javascript中使用正則表達式選擇不在雙/單引號之間的數字

[英]how to select numbers that is not between double/single quotes with regular expression in javascript

嗨我有問題選擇不在單/雙qoutes中的數字。 假設我們在下面有這個文本。

    <style color='#424242'></style>

123

    /* you can count this 5454 */

    <style color="#767676"></style>

8787

我想只選擇123和8787,沒有別的我應該如何使用javascript中的正則表達式

如果我在RegExp中使用\\ d,它將選擇所有數字,我知道。 但我想告訴它只選擇那些沒有被雙/單/星包圍的數字。

我會這樣做:

var numbers = str.split('"').filter(function(_,i){ return !(i%2) }).join('')
                 .split("'").filter(function(_,i){ return !(i%2) }).join('')
                 .match(/\d+/g);

我們的想法是首先刪除引號之間的內容,然后應用正則表達式。

演示 (打開控制台)

但是,就像HTML和正則表達式混合在一起時,你會發現它不起作用的情況。 因此,如果您的用例沒有嚴格控制,您最好解析,例如將正則表達式應用於element.texContent||element.innerText

這可能不是非常跨瀏覽器的解決方案:

var iterator = document.evaluate(
    "descendant::text()",
    document.body, null,
    XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null),
node;
while (node = iterator.iterateNext()) {
    (node.nodeValue.match(/\d+/) || []).forEach(console.log);
}

僅在Firefox中測試,但AFAIK,大多數瀏覽器都提供了一些XPath API,只需查看相關文檔即可。

暫無
暫無

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

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