JavaScript 正则表达式 : remember a match without getting `undefined` results

标签 javascript regex

我正在尝试这样做:

var string = "I am a string with <span class='foo'>tags and stuff</span> as well as words";
return string.split(/(<.*?>)|\s/g);

目标是沿着每个空间分割 \s ,以及任何标签 (<.*?>) 。问题是,我想记住任何标签匹配,所以我把它们放在括号中。问题是,结果还记住字符串中没有有标签的每个部分,从而导致:

["I", undefined, "am", undefined, "a", undefined, "string", undefined, "with", undefined, "", "<span class='foo'>", "tags", undefined, "and", undefined, "stuff", "</span>", "", undefined, "as", undefined, "well", undefined, "as", undefined, "words"]

好吧,那是行不通的。有人知道一种仅在标签实际存在时有条件地记住的方法吗?

最佳答案

我认为不可能只在比赛组实现时才将比赛包括在内。但你可以在不 split 的情况下做到这一点:

return string.match(/<.*?>|[^<\s]+/g);

var string = "I am a string with <span class='foo'>tags and stuff</span> as well as words";
var result = string.match(/<.*?>|[^<\s]+/g);
document.body.insertAdjacentHTML(
  "beforeend",
  JSON.stringify(result).replace(/</g, "&lt;")
);
body {
  font-family: monospace;
}

关于JavaScript 正则表达式 : remember a match without getting `undefined` results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33711721/

相关文章:

regex - 使用grep提取不以3个二进制数字开头的6个任意数字

数组中用于模式匹配的 JavaScript 占位符

javascript - jScrollPane如何存储滚动位置?

javascript - Highcharts折线图,在折线系列末尾显示系列名称

mysql - 在 mySQL 更新语句中使用正则表达式

javascript - 仅查找并获取字符串中的数字

javascript - 如何在magento中添加Html5轮播?

javascript - 如何使用 ExpressJS 从 jQuery ajax post 获取数据

javascript - 正则表达式/Javascript 验证 : Don't allow comma as a valid character

PHP正则表达式: No ending delimiter '^' found in