如何使用正则表达式进行一些Javascript字符串操作?

时间:2013-09-04 20:51:49

标签: javascript regex string

我有一个以表格行标记<tr>...</tr>开头和结尾的字符串。其中有多个<td>,其格式为:

<td class="someClass">TextIWant TextI Do NOtWant</td><td><img src='green.png'></td>
<td class="someClass">TextIWant TextI Do NOtWant</td><td><img src='blue.png'></td>

我正在寻找的是,查看color.png,并在td中添加一个类,并修剪td中的一些文本。最终输出应该是这样的:

<td class="someClass green">TextIWant</td>
<td class="someClass blue">TextIWant</td>

如何使用正则表达式执行此操作?

2 个答案:

答案 0 :(得分:2)

您可能需要提供有关您需要执行的操作的更多详细信息,但最佳操作方法是使用DOM解析器,JavaScript内置一个非常好的(IE8-不受支持)。< / p>

// Select all odd `td` nodes and iterate over them
Array.prototype.forEach.call(document.querySelectorAll("td:nth-child(odd)"),
function (elem) {
    // Get the immediately following sibling (with the img)
    var imgTd = elem.nextSibling;
    // Get the color from the <img>
    elem.className += ' ' + imgTd.querySelector("img").getAttribute("src")
        .replace('.png', '');
    // Remove the sibling
    imgTd.parentNode.removeChild(imgTd);
    // Update the initial elements text to remove the undesired text
    elem.textContent = elem.textContent.replace("TextI Do NOtWant", "");
});

http://jsfiddle.net/e9vrK/

答案 1 :(得分:0)

我使用jquery执行此操作,例如:

var td;
var img;
var color;
 $('img').each(function(){
   img=$(this);
   td = img.closest('td').prev();
   color = img.attr('src').split('.')[0]
     td.html('the image is '+color+'.png').addClass(color);
 });

演示http://jsfiddle.net/QHkbe/2