带有或不带小数的百分比的正则表达式

时间:2017-06-11 13:06:39

标签: php regex

我试图使用正则表达式来验证字符串,如:

1 %
12,25 %
99,99 %
100 %
100,00 %

here

尝试了这个
^(100\,00|[1-9]?\d\,\d{2}) %$

但是我需要小数是可选的,而且这个小数字会失败,如“90%”

这样的字符串

提前谢谢你,

2 个答案:

答案 0 :(得分:1)

因此,将可选部分设为(...)的捕获组 并通过添加?

将其声明为可选项

结果:

^(100(\,00)?|[1-9]?\d(\,\d{2})?) %$

匹配

  • 10%
  • 10,20%
  • 100,00%
  • 100%

赢得不匹配:

  • 10,2%
  • 200%

答案 1 :(得分:0)

/^(10{2}(?:,0{2})?|[1-9]?\d(?:,\d{2})?) %$/

该模式允许百分比为100,00或1或2位数字(2位数字不以0开头)可选地后跟逗号和2位数。

请参阅Pattern Demo了解匹配,解释和效率。

奖金功能:

我的模式使用重复字符的量词来提高性能 它不会在逗号上使用转义斜杠 - 它们不是必需的 按照OP的模式设计,它不会使用多个捕获组。