2015-08-28 59 views
2

我有这个字符串,我想将TEXT1,TEXT2等...提取到数组m中。将字符串中的值提取到Javascript中的数组中

我试过用正则表达式,但它不起作用。

var regex = /item\b[^>]*>(.*?)<button/g; 

var string = '<li id="reminder-1440746981190" class="new-item">TEXT1 
    <button class="icon-trash delete-button" contenteditable="false"></button> 
    <button class="icon-pencil edit-button" contenteditable="false"></button> 
</li> 
<li id="reminder-1440746983703" class="new-item">TEXT2 
    <button class="icon-trash delete-button" contenteditable="false"></button> 
    <button class="icon-pencil edit-button" contenteditable="false"></button> 
</li>'; 

var m; 

while ((m = regex.exec(string)) !== null) { 
    if (m.index === regex.lastIndex) { 
     regex.lastIndex++; 
    } 
} 

alert(m[0]); 

任何想法?

+0

我正在建议'var splts = string.split(/ <[^<]*>(?:\ s * <[^<]*>)*/g); console.info(splts.filter(Boolean));'但我想基于JQuery的答案更酷:) –

回答

3

你可以尝试这样的:

var str = $('li').contents().filter(function(){ 
 
    return this.nodeType === 3; 
 
}).text(); 
 

 
console.log(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li id="reminder-1440746981190" class="new-item">TEXT1 
 
    <button class="icon-trash delete-button" contenteditable="false"></button> 
 
    <button class="icon-pencil edit-button" contenteditable="false"></button> 
 
</li> 
 
<li id="reminder-1440746983703" class="new-item">TEXT2 
 
    <button class="icon-trash delete-button" contenteditable="false"></button> 
 
    <button class="icon-pencil edit-button" contenteditable="false"></button> 
 
</li>

+1

但是,这段代码并没有将标记内容作为数组提供。请检查日志。 –

+0

你说得对。它输出一个字符串。如何将此字符串转换为元素数组? – redviper2100

1

这是基于@拉胡尔的回答返回修剪文本节点阵列的一段代码:

var arr = []; 
 
$('li').contents().filter(function(){ 
 
     if (this.nodeValue !== null && 
 
      this.nodeValue.trim().length > 0) { 
 
     arr.push(this.nodeValue.trim()); 
 
    } 
 
}); 
 
console.log(arr.filter(Boolean));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li id="reminder-1440746981190" class="new-item">TEXT1 
 
    <button class="icon-trash delete-button" contenteditable="false"></button> 
 
    <button class="icon-pencil edit-button" contenteditable="false"></button> 
 
</li> 
 
<li id="reminder-1440746983703" class="new-item">TEXT2 
 
    <button class="icon-trash delete-button" contenteditable="false"></button> 
 
    <button class="icon-pencil edit-button" contenteditable="false"></button> 
 
</li>

结果:["TEXT1", "TEXT2"]