\B говорит, что он смотрит только в пределах границы слова (это означает, что он не может быть частью другого типа слова - он не может быть b123412b123, а только принимать то, что он находит, если он стоит один - 123456, a 123456 w
Затем lookahead (?= сообщает ему, чтобы найти все, что находится в группе (пока оно не достигнет соответствующей закрывающей скобки) и только вернется, если оно будет найдено в целом, но также убедитесь, что замена выполняется в обратном порядке, потому что он смотрит далеко вперед по отношению к концу строки.
?: указывает, что он ищет следующее совпадение, но не создает обратную ссылку (термин в регулярных выражениях)
\d{3} ищет 3 цифры подряд.
Затем + после этого отмечает, что 3 цифры (завернутые в круглые скобки, чтобы убедиться, что правило рассматривается как один блок, например, - (\d{3})+) шаблон может повторить (3 цифры, 6, 9 и т.д.).
Последний (?!\d) ищет еще одну цифру, но исключая ее, убедившись, что цифры находятся в группах по 3 и не сопровождаются цифрами, которые не входят в группы из 3.
Таким образом, в основном он ищет 1 или более групп из 3 цифр, сообщая RegEx не, чтобы вернуть соответствующие цифры (потому что они игнорируются с помощью ?:), поэтому возвращает только часть сопоставьте это не ничего - он возвращает \B, и то, что заменяется. Так эффективно он заменяет только полные группы из 3, начиная с конца строки, заставляя его превращать 3333333 в 3,333,333.