Reputation: 265
I have this string and I want to extract the TEXT1, TEXT2, etc... to an array m.
I tried with regex, but it doesn't work.
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]);
Any ideas?
Upvotes: 2
Views: 112
Reputation: 626738
Here is a piece of code based on @Rahul's answer that returns an array of trimmed text nodes:
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>
Result: ["TEXT1", "TEXT2"]
Upvotes: 1
Reputation: 172398
You can try like this:
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>
Upvotes: 3