我需要在HTML標籤中包裝數字而不影響屬性。在HTML標籤中查找數字的正則表達式
到目前爲止,所有我能得到的是選擇什麼是標籤內只,數字和非數字字符太:(
這裏的正則表達式我使用的是:
/([0-9]+(?:\.[0-9]*)?)/g
我將使用jQuery來分析它。This is the closest I could get jsfiddle。
如何讓這個正則表達式僅用於html標籤內部的數字?
感謝您的幫助。
我需要在HTML標籤中包裝數字而不影響屬性。在HTML標籤中查找數字的正則表達式
到目前爲止,所有我能得到的是選擇什麼是標籤內只,數字和非數字字符太:(
這裏的正則表達式我使用的是:
/([0-9]+(?:\.[0-9]*)?)/g
我將使用jQuery來分析它。This is the closest I could get jsfiddle。
如何讓這個正則表達式僅用於html標籤內部的數字?
感謝您的幫助。
這將選擇html標籤內唯一的數字:
[0-9]+(?:\.[0-9]*)|(?<=^|>)\d+(?=<|$)
這正則表達式是從您提供的鏈接編輯。它也適用於多行文本。
(?!<[A-Z][A-Z0-9]*\b[^><]*>[^><0-9]*)([0-9]+)(?=[^><0-9]*<)
您可以測試它here。
但是請注意,<html>
和<body>
標籤將符合您要求的模式,所以當您通過此正則表達式運行完整的html文檔時,大部分或全部數字都會匹配。所以,現在它只能運行在身體的元素,而不是整個文件
$('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>');
});
});
:
測試上jsfiddle你的代碼我改成了這一點。這是否給出了預期的結果?
同樣,它仍然不會僅選擇數字。 –
[不要使用正則表達式。](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)使用DOM解析器並遍歷文本節點 - 然後僅在這些節點上應用替換。 –
**不要使用正則表達式來解析HTML。使用合適的HTML解析模塊**您無法可靠地使用正則表達式解析HTML,並且您將面臨悲傷和挫折。只要HTML從你的期望改變,你的代碼就會被破壞。有關如何使用已經編寫,測試和調試的PHP模塊正確解析HTML的示例,請參閱http://htmlparsing.com/php。 –
猜猜它可能更精確。如何指示jQuery只查看文本節點?這可能會使正則表達更有效。 –