Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
921 views
in Technique[技术] by (71.8m points)

regex - Javascript replace() with case-change

Is there an easy way to change the case of a matched string with javascript?

Example

String : <li>something</li>

Regex : /<([w]+)[^>]*>.*?</1>/

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.

So how would I go about returning <LI>something</li>? The method, not the regex.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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); 
})

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...