我是 PHP 新手。我试图检查其中一个表单输入(在本例中包含在 $price
中)是否为小数,如下所示:
if(!preg_match("\\d+(.\\d{1,2})?", $price))
//do something
在 Java 中,应该是
price.matches("\\d+(.\\d{1,2})?")
但是相同的正则表达式在 PHP 中不起作用。 preg_match
是否也匹配子字符串?
我希望以下输入为真:
300
300.5
300.56
所有其他格式都应为 false。我不知道如何在 PHP 中做到这一点。
最佳答案
我不明白这在 Java 中是如何工作的。第一个数字只匹配一个数字。您的示例匹配多个数字。
试试这个正则表达式:
/\d+(?:\.\d{1,2})?/
注意我是如何将正则表达式放在“包装器”(/
)中的,并注意我是如何删除数字匹配前面的 \
转义的。此外,我用非捕获组替换了小数点周围的捕获组,因为在您的上下文中它看起来不像您需要它。
PHP代码:
if (!preg_match("/\d+(?:\.\d{1,2})?/",$price)) {
// do something
}
关于php - 匹配价格字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975226/