我有一个包含属性的句子:"hey how <span target="">you</span>"
我想将'hey', 'how', '<span target="">you</span>'
放在数组中。
我使用了string.split(' ')
并获得了['hey','how','<span','target="">you</span>']
是否可以拆分所有单词并同时使用正则表达式,以便捕获以<
开头并以>
结尾的单词?
谢谢
答案 0 :(得分:1)
如果嵌套HTML标记的级别为零,那么这将有所帮助:
console.log('hey how <span target="">you</span>'.match(/(?!<)\S+|<(\w+)\b[^]*?\/\1>/g));
答案 1 :(得分:0)
正则表达式不应该用于解析html - RegEx match open tags except XHTML self-contained tags
也许你应该使用jQuery?
thread_date
答案 2 :(得分:0)
这应该可以解决问题,但正如@Scott所说,正则表达式可能不适合处理html,具体取决于您的数据。
const regex = /\<.+?>.*?\<.+?>|\S+/g;
const str = `hey how <span target="">you</span>`;
console.log(str.match(regex));
答案 3 :(得分:0)
我想说不要使用Regex解析html。使用jquery或javascript函数更加简单和安全。
有关,
<div id="sentence">
hey how <span target="">you</span>
<div>
做点什么
$("#sentence").text() // JQuery
或
document.getElementById("sentence").innerText // Javascript
两者都会给你 - &gt;嘿你好吗