问题描述
是否有一种简单的方法更改使用javascript匹配字符串的情况?
Is there an easy way to change the case of a matched string with javascript?
示例
字符串:< li>某事< / li>
正则表达式: /<([\ w] +)[^>] *>。*?< \ / \1> /
我想做的是将匹配$ 1替换为所有大写字母(如果可能,在替换内)。我不完全确定$ 1是有效匹配而不是字符串 - '$ 1'.toUpperCase不起作用。
And what I'd like to do is replace the match $1 to all capital letters (inside the replace if possible). I'm not entirely sure when $1 is a valid match and not a string -- '$1'.toUpperCase doesn't work.
那我该如何回归呢? < LI>东西< /锂>
?方法,而不是正则表达式。
So how would I go about returning <LI>something</li>
? The method, not the regex.
推荐答案
您可以将replace方法传递给replacer函数。第一个参数是整个匹配,第二个参数是1美元。因此:
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);
})
这篇关于Javascript replace()与大小写更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!