Регулярное выражение не соответствует значению "0.00" - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть следующее регулярное выражение, проверено на regex101.com. Выражение соответствует значениям "30 413,83" и "65 464,70" НО оно не соответствует значению "0,00", если я добавлю еще одну цифру кслева от десятичной точки, это соответствует.FI Если я изменю значение «0,00» на «40,00», оно будет соответствовать всем 3 значениям

Как я могу изменить свое регулярное выражение для соответствия всем 3 значениям?

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

["]*\d+[,]*\d+\.\d{2}["]*(?=,)

Строка:

1650028985,02/01/2018,301217 MUNDO DEL JUGUETE KENN,2344112341191,"30,413.83","0.00","65,464.70",301217 MUNDO DEL JUGUETE KENN SANTO DOMI DO 000082368555,0,

1 Ответ

0 голосов
/ 09 февраля 2019

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

Демо: https://regex101.com/r/3supOS/1/

Шаблон: ~"\d{1,3}(?:,\d{3})*\.\d{2}"~

Для этого требуется:

  • перенос двойных кавычек
  • по крайней мере за 1 цифру до десятичной точки
  • запятая для разделителя тысяч, если / где это необходимо
  • десятичная точка
  • двухзначное десятичное значение

Если вы «извлекаете», а не «проверяете», шаблон может быть написан проще и при этом оставаться эффективным.


Ваш шаблон:

["]*    #optional zero or infinite double quotes
\d+     #required one or more digits
[,]*    #optional zero or infinite commas
\d+     #required one or more digits
\.      #required one dot
\d{2}   #required two digits
["]*    #optional zero or infinite double quotes
(?=,)   #required match must be trailed by a comma
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...