正则表达式html获得乘坐

时间:2015-05-06 23:38:56

标签: javascript jquery regex

我正在制作一个显示照片和文字的微型网站(一个人和这个人的引用)。

我正在与之合作的人向我发送了一批.htm文件,我将其转换为html(大约300个)

我正在使用jQuery .load()

加载照片和文字

这一切都运行正常,但在文本中插入了<br>,在加载文本时会显示var string = $('#lightbox_text').html(); var regex = string.replace(/textoreplace/g, ' '); $('#lightbox_text').html(regex); 。我想用正则表达式来驾驭它们。

我所做的是以下内容:

&lt;<span class=SpellE><span class=GramE>br</span></span>&gt;<o:p></o:p</span>

问题是在.htm里面我想要乘坐的位看起来像这样:

var regex = string.replace(/&lt;<span class=SpellE><span class=GramE>br<\/span><\/span>&gt;/g, ' ');

我不知道如何处理这个...我试过这样做:

.product-info-title:active {
        font-size: 16px;
        color: #666 !important;
        text-decoration: none !important;
        padding: 0;
        margin: 0 0 20px 0;
        display: inline-block;
    }

但这不起作用......不知道我应该怎么做,正则表达式让我很困惑。

5 个答案:

答案 0 :(得分:1)

既然你正在使用jQuery,为什么不使用它暴露的东西来操纵DOM呢?

您的评论表明您将HTML作为文本表示形式。那没关系:

var htmlText = '<p>Some text</p><br><br><br><p>Some text</p>',
  $htmlText = $(htmlText);


$('#output').append($htmlText);
$('#output br').remove(); 
console.log($('#output')[0].innerHTML);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="output"></div>

如果查看控制台输出,您将能够看到删除了<br>元素的HTML字符串表示。

答案 1 :(得分:0)

创建一个RegExp对象,然后在string.replace()方法中使用它。

var regex = new RegExp('&lt;<span class=SpellE><span class=GramE>br</span></span>&gt;<o:p></o:p</span>', 'g');
var stringNoBr = string.replace(regex, '')

答案 2 :(得分:0)

这可能会这样做。有一个被替换的日志。您可以检查错误匹配并根据需要调整正则表达式。

var str = "hello&lt;<span class=SpellE><span class=GramE>br</span></span>&gt;<o:p></o:p</span> world";

str = str.replace(/&lt;<.*?>br<.*?>&gt;<o:p><\/o:p<\/span>/g, function(m){
  console.log("replaced: " + m);
  return "";
});

console.log(str);

答案 3 :(得分:0)

不是将不需要的html放在DOM中,而是将其从DOM中删除...可以使用load()使用$.get切换出来并在插入前删除不需要的内容

$.get(url, function(resp){
    var $tmp = $('<div>').append(resp).find('br').remove();
    $('#yourTaregtElementId').html( $tmp).html());
});

替代CSS解决方案:

.some-class br { display:none}

答案 4 :(得分:0)

好的,所以我发现我的解决方案使用Charlietfl建议来修改源而不是正则表达式。我已经记住了这一点,但使用sed并没有给出预期的结果,因为我无法用空格“查找”和“替换”,甚至只是删除它们。

sed -i 's/THIS/THAT/g' /path/to/files*.file_format

在我的情况下,以下确实有效:

LC_CTYPE=C sed -i 's/&lt;<span class=SpellE><span class=GramE>br</span></span>&gt;<o:p></o:p></span>/-/g' /path/to/files*.html

但将<br>替换为"-"并非如此。 """ "而不是“ - ”对我来说根本不起作用。

注意:如果有人了解更多有关sed的信息,我将非常感谢您解释为什么空格不起作用。

考虑到这一点,我找到了一个替代解决方案,首先使用批处理.htm命令行将文件从.html转换为textutils

textutil -convert html ~/path/to/files/*.htm

这改变了“怪异”的一句话:

&lt;<span class=SpellE><span class=GramE>br</span></span>&gt;<o:p></o:p></span>

到此:

&lt;br&gt;

这是梦想。 然后一个简单的正则表达式可以完成这项工作:

      var string = $('#lightbox_text').html();
      var regex = string.replace(/&lt;br&gt;/gi, ' ');
      $('#lightbox_text').html(regex);