我后面有一个字符串
<!--
document.write("<a rel='nofollow' href='mailto:tranquangdieu2704@gmail.com'>tranquangdieu2704@gmail.com</a>");
//-->
如何在标记中获取htmlentities
tranquangdieu2704@gmail.com
答案 0 :(得分:2)
const rgx = /\&\#\d+;/g;
const string = "<a rel='nofollow' href='mailto:tranquangdieu2704@gmail.com'>tranquangdieu2704@gmail.com</a>";
while ((match = rgx.exec(string)) !== null) console.log(match[0]);
const rgx = /(\&\#\d+;)+/;
const string = "<a rel='nofollow' href='mailto:tranquangdieu2704@gmail.com'>tranquangdieu2704@gmail.com</a>";
console.log(rgx.exec(string)[0]);
此RegEx的优点是可以处理包含HTMLEntities的每个字符串,而不管环境如何。
答案 1 :(得分:1)
const html = "<a rel='nofollow' href='mailto:tranquangdieu2704@gmail.com'>tranquangdieu2704@gmail.com</a>";
const match = /<a[^>]+>([^<]+)<\/a>/.exec(html);
console.log('match: ', match[1]);
console.log('is-correct: ', match[1] === 'tranquangdieu2704@gmail.com');
这行得通,但是我不明白为什么您的标记中会有这么多实体编码。
答案 2 :(得分:1)
仅使用split("")
即可奏效。我认为这是一个更好的解决方案,因为它并不关心href
内部的内容,因此它可以是任何字符串,并将其拆分出来。
const a = `document.write("<a rel='nofollow' href='mailto:tranquangdieu2704@gmail.com'>tranquangdieu2704@gmail.com</a>");`
const array = a.split("mailto:")[1].split("</a>\");")[0]
console.log(array)
答案 3 :(得分:0)
尝试此正则表达式:
const matches = str.match(/&#\d+;/);