/ / Чому цей регулярний вираз повертає коротшу версію очікуваного? - javascript, regex, negative-lookahead

Чому цей регулярний вираз повертає коротшу версію очікуваного? - javascript, regex, negative-lookahead

Чи може хто-небудь допомогти мені зрозуміти, чому наступні повернення "$123,00" і ні "$123,000"?

var string = "$123,000 word word";
string.match(/^$[d|,]+(?!s)/g)

// "$123,00" not "$123,000"

Будемо дуже вдячні за те, щоб допомогти йому повернути "123 000 доларів"

Відповіді:

4 для відповіді № 1

Через твій погляд на голову. Коли він просунувся до останнього 0, збіг оглядача збігається, і регулярний вираз закінчується. Таким чином, він повинен відступити до другої 0. Здається, ви, мабуть, хочете:

"$123,000 word word".match(/^$[d,]+b/)[0]
#=> "$123,000"

1 для відповіді № 2

Джон, чому ти хочеш мати негативний оглядзатвердження, якщо ви хочете, щоб вираз повернув лише "123 000 доларів"? Крім того, я думаю, ви неправильно зрозуміли поняття негативного вигляду, який стверджує, що те, що безпосередньо передує поточній позиції в рядку, не є пробілом (від вашого запитання), а це означає, що він буде рубати рядок починаючи з символу перед пробілом. Для отримання додаткової інформації ви можете звернутися до http://www.rexegg.com/regex-lookarounds.html або ви можете перевірити та налагодити ваш регулярний вираз в https://regex101.com/ який має деяке пояснення щодо вашого регулярного виразу.