正则表达式与“ 0.00”值不匹配

时间:2019-02-08 23:27:26

标签: php regex

我有以下正则表达式,已在regex101.com上进行了测试 该表达式匹配值“ 30,413.83”和“ 65,464.70” ,它与“ 0.00”值不匹配,如果我在小数点左边再加一位数字,则表示匹配。菲如果我将“ 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 :(得分:0)

您似乎只将双引号的float值作为目标,限制为两位小数。

演示: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