Совпадают ли последовательные совпадения в зависимости от первого совпадения - PullRequest
1 голос
/ 08 апреля 2020

Я пришел с ответами (ниже), чтобы попытаться понять, как работают последовательные запросы. Мое понимание кажется противоречивым, и я надеялся, что кто-то может помочь прояснить.

Ответ здесь предполагает, что все указанные указатели должны присутствовать для первого сопоставленного символа ( Почему последовательные указатели не всегда работают ответ Сэма Вана)

Если я примените это к решению в этом ответе: Как напечатать число с запятыми в качестве разделителей тысяч в JavaScript:

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

, это означает, что он ищет не границу символ, за которым следует последовательность символов длиной, кратной 3, и в то же время, за которой следуют символы, не являющиеся цифрами.

например, 12345 Зная, что запятая должна go после 2, но это кажется противоречивым, поскольку 2 имеет 3 цифры, следующие за ним, удовлетворяя первый взгляд, но второй взгляд противоречит этому, поскольку предполагается, что за не следуют никакие цифры.

I ' Я уверен, что я что-то неправильно понимаю. Любая помощь приветствуется. Спасибо!

1 Ответ

1 голос
/ 08 апреля 2020

Это регулярное выражение:

/\B(?=(\d{3})+(?!\d))/g

Имеет только одно положительное условие просмотра, и другой отрицательный взгляд находится внутри этого первого просмотра.

Вот подробности:

  • \B: позиция совпадения, где \b не соответствует (например, между символами слова)
  • (?=: начало lookahead
    • (\d{3})+: сопоставить один или несколько наборов из 3 цифр
    • (?!\d): внутренний отрицательный взгляд вперед, чтобы утверждать, что у нас нет di git после набора совпадений 3 цифры
  • ): конец заглядывать

Однако учтите, что гораздо лучше использовать следующий код для форматирования вашего числа в тысячу строка разделителя:

console.log( parseFloat('1234567.89').toLocaleString('en') )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...