2017-05-26 262 views
0

我想用正则表达式替换字符串中的多个字符。我是交换字母A和T以及G和C.用正则表达式替换字符串中的字符JS

function replacer(string) { 

return "String " + string + " is " + string.replace(/A|T|G|C/g, 
"A","T","G","C"); 


} 

我有正则表达式正确吗?

thankls

+0

什么是你想,以取代他们? –

+0

如果你的意图是'replacer('GATTACA')' - >'“AAAAAAA”',那么它是正确的。但我不认为这是你的意图。 –

回答

3

我建议结合replace回调,其第一个参数是与地图匹配字符从字符 - >替换如下:

// Swap A-T and G-C: 
 
function replacer(string) { 
 
    const replacements = {'A': 'T', 'T': 'A', 'G': 'C', 'C': 'G'}; 
 
    return string.replace(/A|T|G|C/g, char => replacements[char]); 
 
} 
 

 
// Example: 
 
let string = 'ATGCCTCG'; 
 
console.log('String ' + string + ' is ' + replacer(string));

+0

所有好的答案,但这是我正在寻找的 - 谢谢。 – MaxES

1

ATGC - 看起来你是指DNA碱基对:)

目的是交换ATGC。假设输入字符串从不包含字符Z,使用正则表达式的一个简单的交换函数:

注意:更改Z与您有信心的另一个字符或符号不会出现在输入字符串中。例如$也许?

var input = "AAATTGGCCTAGC" 
 
input = input.replace(/A/g,"Z").replace(/T/g,"A").replace(/Z/g,"T"); 
 
input = input.replace(/G/g,"Z").replace(/C/g,"G").replace(/Z/g,"C"); 
 
console.log(input);

1

你可以做这种方式太:

function replacer(string) { 
 
    var newString = string.replace(/([ATGC])/g, m => 
 
    { 
 
    \t switch (m) { 
 
      case 'A': return 'T'; 
 
      case 'T': return 'A'; 
 
      case 'G': return 'C'; 
 
      case 'C': return 'G'; 
 
     } 
 
    }); 
 
    return "String " + string + " is " + newString; 
 
} 
 

 
console.log(replacer('GATTACAhurhur'));