如何在Javascript中通过<span>标记拆分字符串

时间:2015-09-26 18:46:01

标签: javascript

我有一个data.text字符串,它返回一个像:

的值
<span>Name</span>Message

是否可以在Javascript中取这个值并分成两个,这样我就可以在两个不同的变量中得到'Name'和'Message'?

我试过了,

var str = data.text;

var arr[] = str.split("</span>", 2);

var str1 = arr[0];
var theRest = arr[1];

但没有工作

3 个答案:

答案 0 :(得分:1)

可能有很多方法,但使用split添加。

&#13;
&#13;
var str = '<span>Name</span>Message';

var result = str.split(/<\/?span>/); // Split by span tags(opening and closing)
result.shift(); // Remove first empty element
console.log(result);
document.write(result);
&#13;
&#13;
&#13;

此处的正则表达式<\/?span>将与<span></span>匹配,因为正则表达式\/?/可选。

您还可以将以下正则表达式与非捕获组一起使用。

(?:</?span>)(\w+)

&#13;
&#13;
var str = '<span>Name</span>Message';

var regex = /(?:<\/?span>)(\w+)/g,
  result = [];

while (res = regex.exec(str)) {
  result.push(res[1]);
}

console.log(result);
document.write(result);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用空字符串替换open标签,然后使用close标签拆分字符串,如下所示:

var values = data.text.replace('<span>', '').split('</span>');

console.log(values[0]); // Name
console.log(values[1]); // Message

答案 2 :(得分:0)

You should use a DOM parser to parse HTML.

var str = "<span>Name</span>Message",
    el = document.createElement('div');
el.innerHTML = str;
[].map.call(el.childNodes, function(node) {
  return node.textContent;
}); // [ "Name", "Message" ]