有没有一种简单的方法来改变匹配的字符串与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)