不確定如果這可以在JavaScript下的正則表達式完成,但認爲這將是有趣的,看看是否有可能。 所以我以爲我會清理一塊html來刪除大多數標籤,從字面上只是放下它們,所以<H1><img><a href ....>
。這將是相對簡單的(好吧,偷了另一篇文章的基礎,謝謝karim79 Remove HTML Tags in Javascript with Regex)。正則表達式循環和邏輯在JavaScript
function(inString, maxlength, callback){
console.log("Sting is " + inString)
console.log("Its " + inString.length)
var regex = /(<([^>]+)>)/ig
var outString = inString.replace(regex, "");
console.log("No HTML sting " + outString);
if (outString.length < maxlength){
callback(outString)
} else {
console.log("Lets cut first bit")
}
}
但後來我開始思考,有沒有辦法可以控制正則表達式的執行。因此,我們可以說我想保留某些標籤,比如b,br,i,也許可以將H1-6更改爲b。因此,在僞代碼,類似:
for (var i in inString.regex.hits) {
if (hits[i] == H1) {
hits[i] = b;
}
}
的問題是,我想要的文字,那不是HTML標籤留下,因爲它是的,我希望它在默認情況下只切出。一種選擇當然是改變我想保留的選項。一旦完成所有感興趣的事情,請將<b>
更改爲[[b]]。一旦所有未知物被移除,然後將它們放回<b>
。所以像這樣的(僅適用於B,而不是某些下面的代碼將工作):
function(inString, maxlength, callback){
console.log("Sting is " + inString)
console.log("Its " + inString.length)
var regex-remHTML = /(<([^>]+)>)/ig
var regex-hideB = /(<b>)/ig
var regex-showB = /([b])/ig
var outString = inString.replace(regex-hideB, "[b]");
outString = outString.replace(regex-remHTML, "");
outString = outString.replace(regex-showB, "<b>");
console.log("No HTML sting " + outString);
if (outString.length < maxlength){
callback(outString)
} else {
console.log("Lets cut first bit")
}
}
但有可能更聰明,寫鱈ethat這裏說的是HTML標籤的peice的,運行鍼對該代碼比賽。
對於HTML不是很簡單的情況下,其他的任何操作,你可能要考慮使用的解析器,而不是正則表達式。 –
我一開始就在想,但是有沒有「可配置」的。在這種情況下,安全性方面只有一半。原因在於HTML中的內容來自一篇文章,並且代碼預計將採用第一個「n」個字符,並將其作爲文章的一個簡化版。 – vrghost