正则表达式,用于在HTML标记内查找数字

时间:2013-08-21 00:00:51

标签: regex

我需要在HTML标记内包装数字而不影响属性。

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

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

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

Here's the code at RegExr

我将使用jQuery来解析它。 This is the closest I could get jsfiddle

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这与<div>123</div>中的123匹配,例如:

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

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

答案 1 :(得分:0)

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

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

您可以对其进行测试here

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

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>');   
    });
});

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