javascript-从A替换为B

javascript-从A替换为B,javascript,html,replace,Javascript,Html,Replace,我正在尝试做一个chrome的扩展,用沉默来取代论坛上已知的巨魔的评论 有没有一种方法可以判断.replace将文本从起点替换到终点? i、 e:将以“姓名”开头的文本替换为“文章结尾” 提前谢谢 编辑: 为了满足这些意见: walk(document.body); function walk(node) { var child, next; switch ( node.nodeType ) { case 1: // Element case 9: // Docum

我正在尝试做一个chrome的扩展,用沉默来取代论坛上已知的巨魔的评论

有没有一种方法可以判断.replace将文本从起点替换到终点? i、 e:将以“姓名”开头的文本替换为“文章结尾”

提前谢谢

编辑: 为了满足这些意见:

walk(document.body);

function walk(node) 
{
var child, next;

switch ( node.nodeType )  
{
    case 1:  // Element
    case 9:  // Document
    case 11: // Document fragment
        child = node.firstChild;
        while ( child ) 
        {
            next = child.nextSibling;
            walk(child);
            child = next;
        }
        break;

    case 3: // Text node
        handleText(node);
        break;
}
}

function handleText(textNode) 
{
var v = textNode.nodeValue;
var regexReplace = "Name of troll(.*)"

v = v.replace(new RegExp(regexReplace), '');

textNode.nodeValue = v;
}
这是html的外观:

class="up" style="padding-left: 14px" id="pid_31519766" data-pid="31519766"><div class="posting08 ch_wissenschaft"><div class="thread" style="width: 505px" id="t31519766" data-pid="31519766"><div class="row1"><div class="l" style="width:336px "><a class="offset" name="pid31519766"></a><div class="uname" style="max-width:277px "><a rel="nofollow" href="/Userprofil/ByPosting/31519766">NAME OF TROLL</a></div><div class="utools"><a rel="nofollow" class="follow" onclick="STD.FollowingRelationships.followUser(31519766,1363710557719,escape('Orakel von Silesia'))" title="Mitposter von „NAME OF TROLL” werden. „NAME OF TROLL” hat 7 Mitposter.">7</a></div></div><div class="r"><a class="std-button rate p" title="Sehr lesenswert" rel="nofollow" onclick="STD.Forum.rate('31519766',1);">+</a></div><div class="r"><a class="std-button rate n" title="Nicht lesenswert" rel="nofollow" onclick="STD.Forum.rate('31519766', 0);">-</a></div><div class="r rating"><span class="l counter n">14</span><span class="l bar"><span class="wrapper"><span class="n"></span><span class="p"></span></span></span><span class="l counter p">1</span></div><div class="clear"></div></div><div class="row2"><div class="l date" data-timestamp="11.5.2013 15:08:13"><span class="absolute">11.5.2013, 15:08</span><span class="relative"></span></div><div class="r a"><a rel="nofollow" title="Klicken Sie hier, wenn Sie auf dieses Posting antworten möchten." class="onclick" onclick="STD.Forum.post({action: 'reply', id: '31519766', trigger: this}); return false;">antworten</a></div><div class="r p"><a rel="nofollow" title="Mit diesem Link können Sie die URL des Postings aufrufen." href="/plink/1363710557719/31519766">permalink</a></div><div class="r m"><a rel="nofollow" title="Melden Sie Postings an die Redaktion, wenn diese den Community Richtlinien widersprechen." onclick="STD.Forum.report('31519766');">melden</a></div><div class="clear"></div></div></div><div
class="txt" style="width: 505px">
POST I WANNA GET RID OF
</p></div></div></div><div
您可以使用replace替换为正则表达式:

一般情况: 你的情况: 正则表达式名称。*?帖子结尾将匹配从“Name”到它找到的第一个“end of post”的任何内容..*?是一种非贪婪的匹配一切

如果您的意思是文章的结尾是文章的实际结尾,那么可以使用Name.*作为正则表达式。它将匹配以名称开头的每个文本


虽然我不认为你的问题应该是封闭的,但其他人投了封闭的票,你应该更加精确,举例说明你想要什么作为输入,你想要什么。问题应该有你尝试过的代码,这些代码实际上回答了我的问题-所以非常感谢。很明显我问错了问题,因为这样我无法确定我想做什么,因为我想替换的文本的结尾在html源代码中,但这不是我从文本节点读取的字符串。@user211275好的,我看到您使用了第二个案例名。*。正如一般建议,正则表达式中使用的字符串应该转义。也就是说,var regexReplace=Name of troll.*是可以的,但是如果您有像+或这样的字符,则必须对其进行转义,比如:var regexReplace=Name\+\of\troll.*;,凯?干杯
function escapeRegExp(str) { return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); }
var A = 'AAA'; // string A
var B = 'BBB'; // string B
var testStr = "BEFORE AAA WILL BE REMOVED BBB AFTER CCC BBB again DDD"; // string to be replaced

var stopAtFirstBMatch = testStr.replace(new RegExp(escapeRegExp(A)+'(.*?)'+escapeRegExp(B)), '');
console.assert(stopAtFirstBMatch == "BEFORE  AFTER CCC BBB again DDD");

var stopAtLastBMatch = testStr.replace(new RegExp(escapeRegExp(A)+'(.*)'+escapeRegExp(B)), '');
console.assert(stopAtLastBMatch == "BEFORE  again DDD");
var strTest = "Hello my Name is this thal go away until the end of post problem goes away."

var regexEndOfPost = "Name(.*?)end of post"
// alerts: 'Hello my  problem goes away'
alert(strTest.replace(new RegExp(regexEndOfPost), ''));

var regexNameToEnd = "Name(.*)" // in case you want from 'Name' to the end of the string
console.log(strTest.replace(new RegExp(regexNameToEnd), ''));
// alerts: 'Hello my '
alert(strTest.replace(new RegExp(regexNameToEnd), ''));