gpt4 book ai didi

javascript - 如何通过javascript正则表达式获取元素内部文本中的数字

转载 作者:行者123 更新时间:2023-11-28 16:05:52 25 4
gpt4 key购买 nike

我想通过javascript正则表达式获取html内部文本中的数字来替换它们。
例如,在下面的代码中,我想获取 1,2,3,4,5,6,1,2,3,1,2,3,但不是 div 标签内的 444。

<body>
aaaa123aaa456
<div style="background: #444">aaaa123aaaa</div>
aaaa123aaa
</body>

正则表达式可能是什么?

最佳答案

最好的选择是使用 innerTexttextContent获取没有标签的文本,然后只需使用正则表达式 /\d/g获取数字。

function digitsInText(rootDomNode) {
var text = rootDomNode.textContent || rootDomNode.innerText;
return text.match(/\d/g) || [];
}

例如,

alert(digitsInText(document.body));

如果您的 HTML 不在 DOM 中,您可以尝试自己剥离标签:JavaScript: How to strip HTML tags from string?

<小时/>

由于您需要进行替换,我仍然会尝试遍历 DOM 并单独操作文本节点,但如果这是不可能的,请尝试

var HTML_TOKEN = /(?:[^<\d]|<(?!\/?[a-z]|!--))+|<!--[\s\S]*?-->|<\/?[a-z](?:[^">']|"[^"]*"|'[^']*')*>|(\d+)/gi;

function incrementAllNumbersInHtmlTextNodes(html) {
return html.replace(HTML_TOKEN, function (all, digits) {
if ("string" === typeof digits) {
return "" + (+digits + 1);
}
return all;
});
}

然后

incrementAllNumbersInHtmlTextNodes(
'<b>123</b>Hello, World!<p>I <3 Ponies</p><div id=123>245</div>')

产生

    '<b>124</b>Hello, World!<p>I <4 Ponies</p><div id=123>246</div>'

它会混淆像 <script> 这样的特殊元素。 end 并且不会识别实体编码的数字,但应该以其他方式工作。

关于javascript - 如何通过javascript正则表达式获取元素内部文本中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14966604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com