You can pass the replace method a replacer function. The first argument for which is the whole match, the second will be $1. Thus:
mystring.replace(/<([w]+)[^>]*>.*?</1>/, function(a,x){
return a.replace(x,x.toUpperCase());
})
although this form saves the extra operation by making an additional capture (should be faster but haven't checked):
mystring.replace(/<([w]+)([^>]*>.*?</1>)/, function(a,x,y){
return ('<'+x.toUpperCase()+y);
})
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…