我需要在HTML标记内包装数字而不影响属性。
到目前为止,我所能得到的只是选择标签内的内容,数字和非数字字符:(
这是我正在使用的正则表达式:
/([0-9]+(?:\.[0-9]*)?)/g
我将使用jQuery来解析它。 This is the closest I could get jsfiddle
如何使这个正则表达式只查找html标签内的数字?
感谢您的帮助。
答案 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>');
});
});
所以现在它只在身体的元素而不是整个文档上运行。这是否给出了预期的结果?