regexp - совпадение денежной строки с десятичными знаками и тысячами разделителей - PullRequest
0 голосов
/ 28 января 2019
/(?<!\d[- ]|[\d.,])-?[1-9]\d{0,2}(?:(?:[., ]\d{3})*|\d*)(?![\d%]|[- ][\d%])/

тема

812,30
48 kdk 1
54%
1.393.434 test
2.392,39
2,292.39

Я не хочу сопоставлять любую сумму с десятичными знаками.Поэтому линии 812,30, 2.392,39 и 2,292.39 не должны совпадать.

https://regex101.com/r/XPgypx/2

1 Ответ

0 голосов
/ 28 января 2019

Просто исключите их, добавив отрицательный прогноз, исключая их.

(?!.*,.*\.*) для поиска 2,292.39 и (?!.*\..*,*) для поиска 2.392,39 сделают трюк

(?<!\d[- ]|[\d.,])-?[1-9]\d{0,2}(?:(?:[., ]\d{3})*|\d*)(?![\d%]|[- ][\d%])(?!.*,.*\.*)(?!.*\..*,*)

Проверьте это здесь: https://regex101.com/r/XPgypx/4

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