4

我需要在不影响属性的情况下将数字包装在 HTML 标记中。

到目前为止,我所能得到的只是选择标签内的内容,数字和非数字字符:(

这是我正在使用的正则表达式:

/([0-9]+(?:\.[0-9]*)?)/g

这是 RegExr 的代码

我将使用 jQuery 来解析它。这是我能得到的最接近的 jsfiddle

如何使这个正则表达式只查找 html 标签内的数字?

谢谢你的帮助。

4

2 回答 2

1

例如,这匹配 123 <div>123</div>

[0-9]+(?:\.[0-9]*)|(?<=^|>)\d+(?=<|$)

此正则表达式是根据您提供的链接编辑的:http ://regexr.com/?361gc

于 2013-08-21T00:07:15.723 回答
0

这仅选择 html 标记中的数字。它也适用于多行文本。

(?!<[A-Z][A-Z0-9]*\b[^><]*>[^><0-9]*)([0-9]+)(?=[^><0-9]*<)

你可以在这里测试它。

但请注意,<html>and<body>标记将匹配您要求的模式,因此当您通过此正则表达式运行完整的 html 文档时,大多数或所有数字都将匹配。

在jsfiddle上测试您的代码我将其更改为:

$('body').each(function() {
    $(this).html(function(i, v) {
        return v.replace(/(?!<[A-Z][A-Z0-9]*\b[^><]*>[^><0-9]*)([0-9]+)(?=[^><0-9]*<)/gim, '<span>$1</span>');   
    });
});

所以现在它只在正文的元素上运行,而不是整个文档。这是否给出了预期的结果?

于 2013-08-21T01:02:52.630 回答