JavaScript替换除了title = ""内部内容以外的所有内容

3

我有这个文本

var test = "<span data-toggle="tooltip" title="2Test">1TEST</span>";

我不太确定自己在做什么,需要一些帮助。这是我尝试过的内容:
test = test.replace(/<span data-toggle="tooltip" title="|">[^>]*>/gi, "");

测试变量应该只返回“title”内的值。


1
不要使用正则表达式解析HTML!(https://dev59.com/X3I-5IYBdhLWcg3wq6do#1732454) - Biffen
2
为什么你想要解析而不是直接访问DOM并读取所需的值呢? - Rob
2
我有这段文本 - 不是真的,那是语法错误... - deceze
2个回答

2

我同意@Biffen的观点,你不应该使用正则表达式解析HTML!但如果你必须这样做,可以尝试以下方法...

var test = "<span data-toggle='tooltip' title='2Test'>1TEST</span>";
var result = test.match(/title='([^']+)'/)[1];

console.log(result); //2Test

这个代码可以正常工作,但是只有当变量“test”包含“title”时才能正常运行。如果没有“title”,它会抛出一个错误。例如:var test = "normal text"。不过我会自己找到解决办法的,非常感谢。 - user6193206

1
你不需要解析HTML来获取标题属性,相反,你可以从HTML DOM访问标题属性。
使用createElement创建临时容器,然后使用html字符串设置内部html,最后遍历到第一个子元素,即,并获取所需的属性。 <p>Example: <div class="snippet" data-babel="false" data-console="true" data-hide="false" data-lang="js"> <div class="snippet-code"> <pre class="snippet-code-js lang-js prettyprint-override"><code>var test = "<span data-toggle='tooltip' title='2Test'>1TEST</span>"; var el = document.createElement('div'); el.innerHTML = test; var title = el.firstChild.getAttribute('title') console.log(title) //2Test</code></pre> </div> </div> </p>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接