Замена группы захвата Regex на прописную в Javascript

Я хотел бы узнать, как заменить группу захвата ее прописными буквами в JavaScript. Вот упрощенная версия того, что я пробовал до сих пор и что не работает:

> a="foobar"
'foobar'
> a.replace( /(f)/, "$1".toUpperCase() )
'foobar'
> a.replace( /(f)/, String.prototype.toUpperCase.apply("$1") )
'foobar'

Не могли бы вы объяснить, что не так с этим кодом?

67
задан ErikE 26 May 2011 в 19:20
поделиться

1 ответ

Почему мы только не ищем определение ?

, Если мы пишем:

a.replace(/(f)/, x => x.toUpperCase())

мы могли бы также просто сказать:

a.replace('f','F')

Хуже, я подозреваю, что никто не понимает, что их примеры работали только потому, что они получали целый regex с круглыми скобками. Если Вы смотрите определение , первый параметр передал эти replacer, функция на самом деле целый подобранный шаблон а не шаблон, который Вы получили с круглыми скобками:

function replacer(match, p1, p2, p3, offset, string)

, Если Вы хотите использовать нотацию функции стрелки:

a.replace(/xxx(yyy)zzz/, (match, p1) => p1.toUpperCase()
0
ответ дан 24 November 2019 в 14:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: