Php 正则表达式从1+;2+;2.5附加一些规则
我正在尝试使用正则表达式验证格式为Php 正则表达式从1+;2+;2.5附加一些规则,php,regex,preg-match,preg-match-all,Php,Regex,Preg Match,Preg Match All,我正在尝试使用正则表达式验证格式为3.5+1+2+2.5的数字,规则如下: 1)每个数字是0.5的倍数 2)每个数字至少是1 3)只需要一个号码 例如: `2.5+1` Validates `1+2+2.5` Validates `1` Validates `1.6` INCORRECT `1+2+` INCORRECT `1+2+2.5+6` Validates 我想可能吧?但我正在与这种错误模式作斗争: $value = '3.5+1+2+
3.5+1+2+2.5
的数字,规则如下:
1)每个数字是0.5的倍数
2)每个数字至少是1
3)只需要一个号码
例如:
`2.5+1` Validates
`1+2+2.5` Validates
`1` Validates
`1.6` INCORRECT
`1+2+` INCORRECT
`1+2+2.5+6` Validates
我想可能吧?但我正在与这种错误模式作斗争:
$value = '3.5+1+2+2.5';
if (preg_match('/^(\d(\.5)?)(\+\d(\.5)?)*/', $value)) {
echo array_sum(explode('+', $value));
}
但上面的模式似乎验证了一切。试试这个:
^[1-9]+(\.5)?(\+[1-9]+(\.5)?)*$
试试这个:
^[1-9]+(\.5)?(\+[1-9]+(\.5)?)*$
您的正则表达式需要一些小的修改:
- 字符串结束锚定
$
- 用
[1-9]
使用子例程,较短的正则表达式为:
^([1-9]+(\.5)?)(\+(?1))*$
请参见您的正则表达式需要一些小的修改:
- 字符串结束锚定
$
- 用
[1-9]
使用子例程,较短的正则表达式为:
^([1-9]+(\.5)?)(\+(?1))*$
请参见您可以使用^([1-9]+(\.5”)(\+(?1))*$
。在这里观看现场演示,您可以使用^([1-9]+(\.5”)(\+(?1))*$
。看到这里的现场演示,你的帖子对我很有帮助,我能够了解regex,还有很多关于regex引擎中的递归支持,非常感谢@很荣幸。你的帖子对我很有帮助,我也了解了正则表达式,还有很多正则表达式引擎中的递归支持,非常感谢@阿米尔,我的荣幸。