/ / Prečo sa táto regex vráti kratšia verzia očakávaného? - javascript, regex, negatívny vzhľad

Prečo sa táto regexová vráti kratšia verzia očakávaného? - javascript, regex, negatívny vzhľad

Môže mi niekto pomôcť pochopiť, prečo sa vráti "$123,00" a nie "$123,000"?

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

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

Ocenil by pomoc pri získavaní vrátenia "123 000 dolárov"

odpovede:

4 pre odpoveď č. 1

Z dôvodu vášho vzhľadu. Keď sa posunie na posledný 0, vyhľadáva sa zhoduje a regex zlyhá. Takže sa musí vrátiť na druhú 0. Vyzerá to, že asi budete chcieť:

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

1 pre odpoveď č. 2

John, prečo chceš mať negatívny vzhľadtvrdenie, ak chcete, aby výraz vrátil len "123 000 dolárov"? Okrem toho si myslím, že ste nesprávne porozumeli pojmu negatívny vzhľad, ktorý tvrdí, že to, čo bezprostredne predchádza súčasnej pozícii v reťazci, nie je priestor (z vašej otázky), čo znamená, že rozsekne reťazec začínajúci znakom pred priestorom. Viac podrobností si môžete prečítať http://www.rexegg.com/regex-lookarounds.html alebo môžete otestovať a ladiť váš regex https://regex101.com/ ktorý obsahuje niekoľko vysvetlení o vašom regulárnom vyjadrení.