2016-04-15 52 views
0

所以基本上我想要做的是循环浏览html文档中的每个单词,并用'A'替换​​每个单词的第一个字母,第二个倒数第二个字母'b'和最后一个字母'c',完全取代这个词。我不确定正则表达式是否应该这样做(我是否应该使用for循环并检查每个字符?),但无论如何我会问。正则表达式得到每个单词的中间部分javascript

目前我正在做:

document.body.innerHTML = document.body.innerHTML.replace(/\b(\w)/g, 'A');让每个单词

document.body.innerHTML = document.body.innerHTML.replace(/\w\b/g, 'c');的第一个字母来获得每个单词的最后一个字母

所以,如果我有字符串:Lorem ipsum dolor sit amet我可以目前使它Aorec Apsuc Aoloc Aic Amec,但我想在JavaScript中做Abbbc Abbbc Abbbc Abc Abbc

任何帮助非常感谢 - 正则表达式真的让我困惑。

+1

为什么你不只是把每个单词的长度,以尽可能多的BBB根据需要建立新的? –

+0

@ rock321987嗯,是啊虽然没有关于这一点 - 我可能会循环并删除3个或更少字符的单词 – TomHill

+0

@RaphaelMüller - 是的,可能应该走了这条路线(因此我提到了循环的问题),但我已经(试图)从树屋学习正则表达式,并且对如何去做这件事感兴趣:) – TomHill

回答

4

你几乎明白了。

str = "Lorem ipsum dolor sit amet" 
 

 
str = str 
 
    .replace(/\w/g, 'b') 
 
    .replace(/\b\w/g, 'A') 
 
    .replace(/\w\b/g, 'c') 
 

 
document.write(str);

票友置换规则可以与一个回调函数,例如被处理

str = "Lorem ipsum dolor sit amet" 
 

 
str = str.replace(/\w+/g, function(word) { 
 
    
 
    if (word === "dolor") 
 
    return word; 
 
    
 
    return 'A' + 'b'.repeat(word.length - 2) + 'c'; 
 

 
}); 
 

 
document.write(str);

+0

感谢你的这一点,这并不直接关系到我的问题,而只是出于兴趣,如果我想排除'多乐'从我的替代品中,我将如何在多步骤正则表达式中做到这一点? – TomHill

+1

@TomHill:更新... – georg

相关问题