下面是一些字符串,应该作为我的HTML代码。
我正在尝试从下面的字符串或HTML-Code分隔HTML-Tagname。对字符串进行处理后,结果应如下所示:=div=div=strong=em=p=b=p=p=h4=h1=span=
。
这是变量“sTagName”中的HTML代码:
var sTagName = 'abc<div style="left:100px;" > some <div>MyText, <strong> hgz uz <em> Some text for flrdm <p><b>b, <p> <p><h4><h1><span id="MySpan">any text, ';
这是我的解决方案:
// Remove all attributes, e.g. <div style="left:100px;" > will be converted to <div>
sTagName = sTagName.replace(/<([a-zA-Z0-9]+).*?>.*?/g, '<$1>' );
// I add the "<>" at end of HTML-Code in order to remove the last useless string, I mean "Any text, "
sTagName = sTagName + "<>";
sTagName = sTagName.replace(/.*?<(.*?)>.*?/g,'=$1');
alert(sTagName);
函数alert(sTagName)
提供预期结果。
但是我希望改进我的方法指的是性能。例如。我想从两个RegEx构建一个RegEx,或类似的东西。
任何的想法?提前谢谢。
答案 0 :(得分:1)
使用DOM:
var sTagName = 'abc<div style="left:100px;" > some <div>MyText, <strong> hgz uz <em> Some text for flrdm <p><b>b, <p> <p><h4><h1><span id="MySpan">any text, ';
tags = $("<div>").html(sTagName).find("*").map(function() {
return this.nodeName;
}).toArray();
document.write(tags);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:1)
你可以这样做:
var sTagName = 'abc<div style="left:100px;" > some <div>MyText, <strong> hgz uz <em> Some text for flrdm <p><b>b, <p> <p><h4><h1><span id="MySpan">any text, ';
var arr = new Array;
var result;
var re = /<(\w+)/g;
while ((m = re.exec(sTagName)) !==null) {
arr.push(m[1]);
}
result = '=' + arr.join('=') + '=';
console.log(result);
答案 2 :(得分:1)
尝试
sTagName = $.map(sTagName.split(/[^<\w+]/), function(v, k) {
return /</.test(v) ? v.replace(/[a-z]+<|</g, "=") : null
}).join("").concat("=");
var sTagName = 'abc<div style="left:100px;" > some <div>MyText, <strong> hgz uz <em> Some text for flrdm <p><b>b, <p> <p><h4><h1><span id="MySpan">any text, ';
sTagName = $.map(sTagName.split(/[^<\w+]/), function(v, k) {
return /</.test(v) ? v.replace(/[a-z]+<|</g, "=") : null
}).join("").concat("=");
$("body").text(sTagName)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
答案 3 :(得分:0)
<(\w+)\s*[^>]*>|.(?=([^><]*<[^>]*>)*[^<>]*$)
尝试使用$1
替换。稍后将=
附加到每个结果。
参见演示。