当使用正则表达式包装页面中所有单词的span标记时,正则表达式-Javascript存在问题
发布时间:2022-07-08 05:31:33 240
相关标签: # 前端
我需要在网页上获取所有单词,并用“span”标记将每个单词包装起来。
我用正则表达式实现了它,但代码测试有3个错误:
错误1:类属性值;文本“;span标记包装错误,不是页面内的文本
错误2:;istest“;是一个单词,中间没有空格,但被代码分成两个单词,并且;是“;未被跨度包裹。
错误3:;[]和;不是通过正则表达式解决的,我尝试将“[]”添加到包装span标记的正则表达式中,但它导致了更大的错误,奇怪的是;{}()”;工作正常。
正确的测试结果是网页上所有的文字背景都变灰了,目前还没有达到。
// remove duplicates from an array
function unique(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
// Wrap 'span' tags around all words
function add_span(word_array, element_) {
for (let i = 0; i < word_array.length; i++) {
// ????????????????Regular expression cannot join \[\]
var reg_str = "([ \s\t\r\n.?,\"\';:!(){}<>\/]|\xa0|\x20|\u3000| )";
var reg = new RegExp(reg_str + "(" + word_array[i] + ")" + reg_str, 'g');
element_ = element_.replace(reg, '$1$2$3');
}
return element_;
}
window.onload = function() {
console.log(document.body.innerText); // all text in body
// text to word array
var word_array = document.body.innerText.split(/[ \s\t\r\n.?,\"\';:!()\[\]{}<>\/]|\xa0|\x20|\u3000| /);
word_array = word_array.filter(e => e != ''); // remove empty values
word_array = unique(word_array); // remove duplicate values
console.log(word_array);
// Wrap 'span' tags around all words
var text_html = add_span(word_array, document.body.innerHTML);
document.body.innerHTML = text_html;
console.log(text_html);
}
span {
background: #ccc;
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报