标签
2023年08月10日
一、标签名称
1.1 /^<\/?([a-z][^\t\r\f\n\s/>]*)/i
const startTagReg = /^<\/?([a-z][^\t\r\n\f\s/>]*)/i;
function parseTag(content) {
const match = startTagReg.exec(content);
const tag = match[1];
return tag;
}
const str = '<div class="div-class"></div>';
console.log(parseTag(str));
const str1 = '<input class="div-class" />';
console.log(parseTag(str1));
二、标签内容
2.1 /(?<=¥).*?(?=¥)/
// 使用正则
let reg = /(?<=¥).*?(?=¥)/;
let str = '¥1234¥';
// 使用
str.match(reg); // 输出 ['1234']
三、标签属性
3.1 标签属性名
const attributeNameReg = /^[^\t\r\n\f\s/>][^\t\r\n\f\s/>=]*/;
function parseAttributeName(content) {
const match = attributeNameReg.exec(content);
return match[0];
}
console.log(parseAttributeName('class="div-class"'));
3.2 标签属性值
3.3 过滤标签属性值
需求描述: 现有字符串str
,str
中有三个script
标签。现在需要将src
地址为vue.min.js
的过滤掉
const str='<script src="http://localhost:8090/vue.min.js"></script><script src="http://localhost:8090/axios.min.js"></script><script src="http://localhost:8090/element-ui.min.js"></script>';
const reg=/<script(?:(?!<\/script>).)*axios(?:(?!<\/script>).)*<\/script>/g;
console.log(str.replace(reg,''));
四、结束标签
4.1 /[\t\r\n\f\s/>]/
需求描述: 判断是否为 xx
的结束标签
const endTagEndCharReg = /[\t\r\n\f\s/>]/;
function startsWith(source, searchString) {
return source.startsWith(searchString);
}
function startsWithEndTagOpen(source, tag) {
return (
startsWith(source, '</') &&
source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() &&
endTagEndCharReg.test(source[2 + tag.length] || '>')
);
}
console.log('示例一', startsWithEndTagOpen('</div >', 'div'));