Javascript replace()与大小写更改

Ian*_*ott 6 javascript regex

有没有一种简单的方法来改变匹配的字符串与javascript的情况?

字符串: <li>something</li>

正则表达式: /<([\w]+)[^>]*>.*?<\/\1>/

我想做的是将匹配$ 1替换为所有大写字母(如果可能,在替换内).我不完全确定$ 1是有效匹配而不是字符串 - '$ 1'.toUpperCase不起作用.

那我怎么回事<LI>something</li>呢?方法,而不是正则表达式.

ann*_*ata 15

您可以将replace方法传递给replacer函数.第一个参数是整个匹配,第二个参数是1美元.从而:

mystring.replace(/<([\w]+)[^>]*>.*?<\/\1>/, function(a,x){ 
   return a.replace(x,x.toUpperCase()); 
})
Run Code Online (Sandbox Code Playgroud)

虽然这种形式通过进行额外的捕获来保存额外的操作(应该更快但是没有检查):

mystring.replace(/<([\w]+)([^>]*>.*?<\/\1>)/, function(a,x,y){ 
   return ('<'+x.toUpperCase()+y); 
})
Run Code Online (Sandbox Code Playgroud)