我在互联网上找到了这段代码。它需要一个句子,并使每个单词与该单词链接。但它有一个弱点:如果一个句子中有HTML,这个脚本不会删除它。
例如:它将“http://www.merriam-webster.com/dictionary/<b>asserted</b>
”替换为“<b>asserted</b>
”
您能告诉我在此代码中要更改的内容,以便将“http://www.merriam-webster.com/dictionary/asserted
”更改为“var content = document.getElementById("sentence").innerHTML;
var punctuationless = content.replace(/[.,\/#!$%\؟^?&\*;:{}=\-_`~()”“"]/g, "");
var mixedCase = punctuationless.replace(/\s{2,}/g);
var finalString = mixedCase.toLowerCase();
var words = (finalString).split(" ");
var punctuatedWords = (content).split(" ");
var processed = "";
for (i = 0; i < words.length; i++) {
processed += "<a href = \"http://www.merriam-webster.com/dictionary/" + words[i] + "\">";
processed += punctuatedWords[i];
processed += "</a> ";
}
document.getElementById("sentence").innerHTML = processed;
”。
sample1.str
sample1.yy
sample1_ABC.log
答案 0 :(得分:5)
此正则表达式/&lt; {1} [^&lt;&gt;] {1,}&gt; {1} / g应替换其中两个&lt;&gt;之间的字符串中的任何文本。和括号本身有一个空白区域。此
var str = "<hi>How are you<hi><table><tr>I<tr><table>love cake<g>"
str = str.replace(/<{1}[^<>]{1,}>{1}/g," ")
document.writeln(str);
会回复“你好我喜欢蛋糕”。
如果您粘贴此
var stripHTML = str.mixedCase(/<{1}[^<>]{1,}>{1}/g,"")
就在这个
之下var mixedCase = punctuationless.replace(/\s{2,}/g);
并在行之后用stripHTML替换mixedCase,它可能会起作用
答案 1 :(得分:1)
function stripAllHtml(str) {
if (!str || !str.length) return ''
str = str.replace(/<script.*?>.*?<\/script>/igm, '')
let tmp = document.createElement("DIV");
tmp.innerHTML = str;
return tmp.textContent || tmp.innerText || "";
}
stripAllHtml('<a>test</a>')
此函数将删除所有HTML并仅返回文本。
希望这对您有用
答案 2 :(得分:0)
如果您需要删除HTML标签和HTML实体,可以使用
const text = '<p>test content </p><p><strong>test bold</strong> </p>'
text.replace(/<[^>]*(>|$)| |‌|»|«|>/g, '');
结果将为“测试内容测试粗体”