【问题标题】:Regular expression does not match "0.00" value正则表达式与“0.00”值不匹配
【发布时间】:2019-02-08 23:27:26
【问题描述】:

我有以下正则表达式,在 regex101.com 上测试过 该表达式匹配值“30,413.83”和“65,464.70”它不匹配“0.00”值,如果我在小数点左侧再添加一位,它匹配。 F.I.如果我将“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,

【问题讨论】:

  • 试试'~"*\d+(?:,\d+)?\.\d{2}"*(?=,)~'

标签: php regex


【解决方案1】:

您似乎只针对双引号浮点值,限制为小数点后两位。

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

【讨论】:

  • 如果这不是你想要的,请澄清任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 2012-12-23
  • 2019-07-11
相关资源
最近更新 更多