JavaScript 正则表达式 : search and replace tags in string

标签 javascript regex replace

我需要一些 Regexp Javascript/JQuery 方面的帮助。我成功了,但我认为还有更好、更简单的解决方案。

想法是: 如果在 button点击,target内部 html 有标签 <b></b>任何地方 - 删除它们,否则添加标签 <b>在开始和</b>最后。

这是代码:jsFiddle example

<input id="button" type="button" value="Bold it"/>
<div id="target">This is <b>sample</b> text</div>


$(function(){
    $('#button').click(function(){

       var t = $('#target');

         //: search for '</b>' too ???
         var isFound = t.html().search(new RegExp(/<b>/i));

         if(isFound >= 0) //: make 2 replaces into 1 ???
            t.html(t.html().replace(/<b>/,'').replace(/<\/b>/,''))
         else
            t.html('<b>'+t.html()+'</b>')
    })
})

问题在代码中注释:

  1. 如何搜索 <b></b>

  2. 制作.replace(/<b>/,'').replace(/<\/b>/,'')在一个.replace(/<b>...?..../,'')

最佳答案

这不是正则表达式的用武之地,因为表达式失败的方式有很多种。参见 RegEx match open tags except XHTML self-contained tags出于幽默的原因。 尝试使用 t.children("b");找到 <b>...</b/> 的实例在你的标签中。

在这种情况下,请尝试以下操作:

t.children("b").each(function() {
    var contents = $(this).contents();
    $(this).replaceWith(contents);
});

或完全展开:

$(function(){
    $('#button').click(function(){
        var t = $('#target');
        t.children("b").each(function() {
            var contents = $(this).contents();
            $(this).replaceWith(contents);
        });
    });
});

关于JavaScript 正则表达式 : search and replace tags in string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8096639/

相关文章:

javascript - 向元素添加事件

javascript - 如何让两个 Javascript div 在彼此重叠时可以拖动?

regex - 通过 linux shell 执行文本

regex - Perl - 用于查找和替换不属于字符实体的&符号的正则表达式

javascript - 其中条件作为结果中的变量

regex - 使用 awk 提取所有电子邮件

php - 正则表达式 - 如何从文本文件的一行中获取该值?

javascript - 在字符串中查找部分但替换整个大小写正则表达式?

java - Java 7 中的 Regex-replace-with-function-evaluation 等效于什么?

javascript - 如果 React 组件库需要 React 作为对等依赖项,我该如何使用它来制作 Preact?