使用其他javascript删除字符串中字符的所有实例

时间:2012-03-14 14:55:27

标签: javascript jquery regex replace

我需要用空格替换所有<br />。下面是动态吐出的字符串,我需要隐藏br标签...

M,W,Th,F 7:30 AM - 4:00 PM<br />Tu 7:30 AM - 6:00 PM<br />

我做错了什么?是否可以用逗号替换所有其他br标签,除了最后一个,将用空格重新标记

$('.WorkingHours').text().replace(/<br />/g, " "); 

5 个答案:

答案 0 :(得分:5)

您的代码有三个问题:

  1. $('.WorkingHours').text()不包含任何HTML(因此也没有br标记),它只返回元素的文本内容。
    $('.WorkingHours').text()返回:

      

    M,W,Th,F 7:30 AM - 4:00 PMTu 7:30 AM - 6:00 PM

    $('.WorkingHours').html()返回:

      

    M,W,Th,F 7:30 AM - 4:00 PM<br>Tu 7:30 AM - 6:00 PM<br>

  2. 您必须在表达式中转义内部反斜杠。 修改:查看.html()的输出,它实际上不包含<br />,但<br>。这可能取决于文档的文档类型(not working exampleworking example)。

  3. 您必须将值分配回元素。

  4. 你可以做到

    $('.WorkingHours').html(function(i, html) {
        return html.replace(/<br\s*\/?>/g, " "); 
    });
    

    但根本不使用正则表达式会更加清晰:

    $('.WorkingHours').find('br').replaceWith(' ');
    

    这将查找所有br个元素节点,并将其替换为仅包含空格的文本节点。

    DEMO

    更新(响应您的一条评论):如果您想用句号替换最后一个br,可以使用.last()

    $('.WorkingHours')
     .find('br').last().replaceWith('.')
     .end().replaceWith(' ');
    

    DEMO

答案 1 :(得分:1)

夫妻俩:

使用html()获取节点的HTML:

var rawHTML = $('.WorkingHours').html();

使用\转义正则表达式中的/

/<br \/>/g

将HTML设置为替换函数的返回值:

$('.WorkingHours').html(rawHTML.replace(/<br \/>/g, ' ');

最终产品:

var rawHTML = $('.WorkingHours').html();
$('.WorkingHours').html(rawHTML.replace(/<br \/>/g, ' ');

答案 2 :(得分:0)

使用.text()代替.html()删除html代码

.text()仅返回内部文本,而不是内部html。

答案 3 :(得分:0)

我认为你需要逃避表达式中的正斜杠,例如

$('.WorkingHours').text().replace(/<br \/>/g, " "); 

答案 4 :(得分:0)

您需要在<br />

中转义正斜杠
$('.WorkingHours').text().replace(/<br \/>/g, " "); 

http://jsfiddle.net/uLYrH/1