2015-12-26 4 views

ответ

3
(/-(\w)/g).exec("a-b") 
// [ "-b", "b" ] 

Так, "b" является второй аргумент, переданный replace обратного вызова, первый аргумент весь матч.

"a-b".replace(/-(\w)/g, (p1, p2) => p2.toUpperCase()) 
// "aB" 

EDIT было бы более ясно написано так:

"a-b".replace(/-(\w)/g, (match, p1) => p1.toUpperCase()) 
// "aB" 
+0

На [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Global_Objects/String/replace # Specifying_a_function_as_a_parameter) Мне сказали, что 'p1',' p2' ... (в функциях) равны '$ 1',' $ 2' ... (в строках). –

+0

@DmitryParzhitsky в статье, которую вы связали, упоминается, что первый аргумент передается по всему совпадению, тогда 'p1 ... pn' - это парагенизированные подматрицы. Су, вы правы, но 'p1', который будет соответствовать« $ 1 », является вторым аргументом. – pawel

+0

Да, в самый последний момент у меня это есть. –

Смежные вопросы