我通常会告诫不要使用正则表达式来解析数字,因为通常有比正则表达式更好的解决方案,但既然你在问,我会尽力为你提供一些帮助:
preg_match 使用正则表达式 (regex) 进行匹配。
您可以在 http://www.regular-expressions.info/ 等网站上找到更多关于正则表达式语法的信息
如果要匹配正则表达式中的数字,可以使用[0-9] 或\d。
如果你想匹配任何一个或多个,你会使用加号。
最后,正则表达式字符串需要包含在一对字符中。选择的字符通常是斜杠 (/) 字符,因为某些语言特别需要此字符,但 PHP 也允许使用其他字符;波浪号 (~) 很常见。
因此,匹配任意位数的正则表达式字符串将是"/\d+/"。然后可以将其放入preg_match 调用中,如下所示:
$isnumeric = preg_match("/\d+/",$input_string);
如果您有更具体的要求,可以通过将加号替换为 {max} 或 {min,max} 来限制允许的字符数,其中“min”和“max”是允许前面匹配的次数。因此,要允许长度介于 2 到 6 位之间的数字,您可以这样使用:
$isnumeric = preg_match("/\d{2,6}/",$input_string);
如果您需要允许小数点,您需要知道点字符是正则表达式中的特殊字符(这意味着“匹配任何字符”),因此您需要使用反斜杠对其进行转义。
因此,匹配货币金额的正则表达式有两个小数位,并且该点前至少有一位数字将是这样的:
$isnumeric = preg_match("/\d+\.\d\d/",$input_string);
最后,请注意,如果字符串只是包含匹配的值,则正则表达式将在上述所有情况下返回true。为确保它不包含任何其他内容,您需要使用锚字符将其“锚定”到字符串的开头和结尾:^ 用于字符串的开头,$ 用于结尾。
所以对于前面的例子,如果你希望它只包含一个十进制数,没有别的,你需要这个:
$isnumeric = preg_match("/^\d+\.\d\d$/",$input_string);
正则表达式是一个复杂的主题,但我希望它能给你一个开始。