Anonymously Replace string with Regex
# Peter Jaszkowiak (6 years ago)
All you have to do is write the regex differently:
input.replace(
/(your )(\w+)( from )(\w+)/,
(w, a, b, c, d) => `${a}${b.toUpperCase()}${c}${d.toLowerCase()}`
);
All you have to do is write the regex differently: ``` input.replace( /(your )(\w+)( from )(\w+)/, (w, a, b, c, d) => `${a}${b.toUpperCase()}${c}${d.toLowerCase()}` ); ``` On Fri, Sep 7, 2018, 09:08 sion <shanyy163 at 163.com> wrote: > Emmmmm, pretty sorry for misleading you… > > Your solution will not work if I just provide you a regex without telling > you detail information, all I want is replace first and second word matched > by the regex, nothing more. > > > 在 2018年9月7日,下午10:57,Peter Jaszkowiak <p.jaszkow at gmail.com> 写道: > > ``` > input.replace( > /your (\w+) from (\w+)/, > (w, a, b) => `your ${a.toUpperCase()} from ${b.toLowerCase()}` > ); > ``` > > On Fri, Sep 7, 2018, 08:49 sion <shanyy163 at 163.com> wrote: > >> This is just a very simple example, of cause you could write it like that. >> >> >> Maybe my second example is unsuitable, how about this one: >> >> input.replace(/your \w+ from \w+/, a => a.toUpperCase(), b => b.toLowerCase()); >> >> >> INPUT: your friend from USA OUTPUT: your FRIEND from usa >> >> >> Actually, I am not very familiar with regex, I wonder if there is any >> performance issue if we support this kind of feature. >> >> >> >> 在 2018年9月7日,下午10:13,Peter Jaszkowiak <p.jaszkow at gmail.com> 写道: >> >> You do know that all capture groups are passed to the function, right? >> You can write your second example like this, even though the capture groups >> are totally useless: >> >> ``` >> input.replace( >> /your (\w+) from (\w+)/g, >> (whole, a, b) => 'your book from amazon' >> ); >> ``` >> >> On Fri, Sep 7, 2018, 07:23 sion <shanyy163 at 163.com> wrote: >> >>> >>> Is it possible to enhance the string.prototype.replace(regex, func) ? >>> >>> By now, we can do something like this: >>> >>> input.replace(/(^|_)[a-z]/g, a => a[a.length - 1].toUpperCase()); >>> >>> INPUT: ab_cd_ef OUTPUT: abCdEf >>> >>> >>> >>> However, i want something more powerfull, like this: >>> >>> input.replace(/your (\w+) from (\w+)/g, a => 'book', b => 'amazon’); >>> >>> INPUT: your friend from china OUTPUT: your book from amazon >>> >>> >>> As you can see, I just want the replace could replace multi fragments at >>> the same time. And I don’t think there is any conflicts with other >>> principles of string.prototype.replace. >>> >>> _______________________________________________ >>> es-discuss mailing list >>> es-discuss at mozilla.org >>> https://mail.mozilla.org/listinfo/es-discuss >>> >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180907/b7973073/attachment.html>
Emmmmm, pretty sorry for misleading you…
Your solution will not work if I just provide you a regex without telling you detail information, all I want is replace first and second word matched by the regex, nothing more.