javascript - Jquery - 替换特定 div 容器内除外

标签 javascript jquery

以下函数将替换文本的某些部分

function q(text) {
    text = text.replace(/\[quote=?(.*?)\]/gi,"<div class=\"rq\"><p> $1</p><span>")
    text = text.replace(/\[\/quote\]/gi,"</span></div>");
    return text;
}

我正在寻找避免替换 [quote=(.*)] 和 [/quote] 如果它们位于某个类 div 内(class=haha AVOID)

示例:

<div class="full"> 
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed doeiusmod  
[quote=ok]I should be replace[/quote] Lorem ipsum
dolor sit amet, consectetur adipiscing elit, sed do eiusmod  
<div class="haha"> [quote=no]I shall not be replace[/quote]
bblablablablablabla
</div> 
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
blablabla (other [quote] inside or not inside a div=haha may follow...)
...
</div>

最佳答案

我试图为您的 class="haha" div 的内容添加一个掩码。屏蔽后,会发生真正的报价替换。最后我再次揭开了它的面纱。

让我们检查一下我的版本。我已将整个 HTML 放入 Javascript 变量中。我还对您的功能进行了一些修改以使其正常工作。

var text = '<div class="full">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed doeiusmod[quote=ok]I should be replace[/quote] Lorem ipsumdolor sit amet, consectetur adipiscing elit, sed do eiusmod<div class="hahaa"> [quote=no]I shall not be replace[/quote]bblablablablablabla</div>Lorem ipsum dolor<div class="haha"> [quote=no]I shall not be replace[/quote]bbla</div>it amet, consectetur adipiscing elit, sed do eiusmodblablabla (other [quote] inside or not inside a div=haha may follow...)...</div>';

var resultText = q(text);
console.log(resultText);

function q(text) {
    var matches = text.match(/<div class="haha">([^<]*)<\/div>/gi);
    text = text.replace(/<div class="haha">([^<]*)<\/div>/gi, "#######");
    text = text.replace(/\[quote=?(.*?)\]/gi,"<div class=\"rq\"><p> $1</p><span>");
    text = text.replace(/\[quote=?(.*?)\]/gi,"<div class=\"rq\"><p> $1</p><span>");
    text = text.replace(/\[\/quote\]/gi,"</span></div>");

    for(i in matches){
      text = text.replace(/#######/i, matches[i]);
    }
    return text;
}

关于javascript - Jquery - 替换特定 div 容器内除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32292613/

相关文章:

javascript - 如何测试Javascript中另一个函数的函数调用次数?

javascript - jQuery:在特定窗口大小中添加或删除函数

javascript - 使用onkeyup javascript时如何停止和再次启动ajax提交表单?

javascript - Angular 指令点击函数调用两次

javascript - Object.getOwnPropertyNames() 似乎没有返回所有可访问的属性

javascript - 如何从 fetch api 保存到状态并保存到局部变量结果

javascript - 我正在尝试为 JQuery slider 中的 DIV 设置动画

javascript - 我可以在文件类型输入中显示文件大小吗?

javascript - JQuery:从cookie中检索对象

Javascript解析查询参数