![](/img/trans.png)
[英]Javascript regular expression to strip out content between double quotes
[英]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.