0
有一个很好的方法in this answer用于将span
添加到页面中的每个数字。向第n位数字添加类
var regex = /(\d+)/,
replacement = '<span>$1</span>';
function replaceText(el) {
if (el.nodeType === 3) {
if (regex.test(el.data)) {
var temp_div = document.createElement('div');
temp_div.innerHTML = el.data.replace(regex, replacement);
var nodes = temp_div.childNodes;
while (nodes[0]) {
el.parentNode.insertBefore(nodes[0],el);
}
el.parentNode.removeChild(el);
}
} else if (el.nodeType === 1) {
for (var i = 0; i < el.childNodes.length; i++) {
replaceText(el.childNodes[i]);
}
}
}
replaceText(document.body);
是否可以将span
添加到数字的每第三个数字?我的意思是,没有使用Lettering.js。
编辑
@ thg435已经回答了这个问题,但我dicovered,他的第二个正则表达式/\d(?=\d\d(\d{3})*\b
不上阿拉伯数字,这我正在工作。 (阿拉伯数字从“0”开始到“9”,并且可以在正则表达式中作为[0-9])。问题可能出在\b
在第二个正则表达式的末尾。
此外,作为我正在尝试/希望实现的一个示例,١٢٣٤
应该变成١<span>٢</span>٣٤
。
谢谢,尤其是正则表达式。但是,正如我所提到的,这是处理数字,所以应该从右侧选择数字。任何想法? – Iryn 2013-04-26 07:53:51
@Iryn:已更新。 – georg 2013-04-26 08:05:34
你已经回答了这个问题,所以我会把它标记为答案。只有一个缺点:我不是在处理英文数字,而是阿拉伯数字,而且似乎这个正则表达式不适用于他们。你介意告诉我该怎么处理?字符范围是[0-9]。 – Iryn 2013-04-26 09:10:51