我正在编写一个 chrome 扩展,我需要拆分一个仅包含文本和 img 标签的字符串,以便数组的每个元素都是字母或 img 标签。例如,"a", "b", "c", "<img.../>", "d"
。我找到了一种方法来做到这一点:str.split(/(<img.*?>|)/)
但是,结果数组的某些元素是空的(我不知道为什么)。还有其他合适的正则表达式吗?
非常感谢您的帮助。
你得到空元素的原因和你得到空元素的原因是一样的<img...>
在你的结果中。当您在 a 中使用捕获括号时split
模式,结果将包含在找到分隔符的位置处的捕获。既然你有(<img.*?>|)
,如果使用第二种选择,则匹配(并捕获)一个空字符串。很遗憾,(<img.*?>)|
单独没有帮助,因为你仍然会得到undefined
而不是空字符串。但是,您可以轻松地那些出去:
str.split(/(<img[^>]*>)|/).filter(function(el) { return el !== undefined; });
这仍然会在字符串的开头和结尾以及相邻的元素之间产生空元素<img>
不过,标签。如此分裂<img><img>
会导致
["", "<img>", "", "<img>", ""]
如果您不希望这样,过滤器功能会变得更加简单:
str.split(/(<img[^>]*>)|/).filter(function(el) { return el; });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)