Извлекать числа, точки и запятые, используя регулярное выражение - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь извлечь сумму $50,000.00 из строки, в которой есть число, запятая и точка. Мой код ниже:

var amount = '$50,000.00Fund Transfer to XXXX9090 Ref #0675'.match(/[^0-9,.]/);

Ответы [ 3 ]

1 голос
/ 28 февраля 2020

Вы можете использовать [\d,]+\.\d+, если в номере требуется точка, например: [\d,]+\.\d+.

Если точка не обязательна - вы можете использовать [\d,]+(\.\d+)?,
, но в этом случае Вы можете захватить нежелательные значения, такие как: 9090 и 0675.

В результате ваш код должен выглядеть следующим образом:

var amount = '50,000.00Fund Transfer to XXXX9090 Ref #0675'.match(/[\d,]+\.\d+/)[0]

В случае, если это число должно быть самым левым числом - как это:

var amount = '50,000.00Fund Transfer to XXXX9090 Ref #0675'.match(/^[\d,]+\.\d+/)[0]
0 голосов
/ 28 февраля 2020

Попробуйте это - \d{1,3}(,\d{3})*\.\d{2}. Он должен соответствовать только тем числам, которые правильно отформатированы с десятичным разделителем (точка .) и разделителем тысяч (запятая ,):

const amount = '50,000.00Fund Transfer to XXXX9090 Ref #0675'.match(/\d{1,3}(,\d{3})*\.\d{2}/)[0];

console.log(amount)

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

\$\d{1,3}(,\d{3})*\.\d{2}

0 голосов
/ 28 февраля 2020

^ в начале класса Charactor означает not. А также вам не хватает +. Значение вашего выражения not a digit or , or . and only once

Ответ /^[\d,\.]+/ или /^[0-9,\.]+/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...