如何检查输入的值是否为货币

2022-08-30 20:13:04

如何检查输入的值是否为货币。最好通过正则表达式或php函数。

(诸如 之类的值,或1550.501500100.75)


答案 1

我想你真正想要的是一种从数字中分辨出任何数字的方法,这个数字作为货币值是有意义的。所以可能不应该匹配,也不应该或,即使所有当然都是数字。1.04e-71.23412.3

最后,您必须期望像(像小数点一样,它们也可能因区域设置而异)之类的分隔符。因此,假设您只想使用点作为小数分隔符和逗号作为可选的千位分隔符来检查货币值,请尝试以下操作:1,234.56

/\b\d{1,3}(?:,?\d{3})*(?:\.\d{2})?\b/

解释:

\b      # word boundary assertion
\d{1,3} # 1-3 digits
(?:     # followed by this group...
 ,?     # an optional comma
 \d{3}  # exactly three digits
)*      # ...any number of times
(?:     # followed by this group...
 \.     # a literal dot
 \d{2}  # exactly two digits
)?      # ...zero or one times
\b      # word boundary assertion

答案 2

我用这个:

function isCurrency($number)
{
  return preg_match("/^-?[0-9]+(?:\.[0-9]{1,2})?$/", $number);
}

//usage examples
echo (isCurrency("10.36") ? "TRUE" : "FALSE");
echo (isCurrency(10.3) ? "TRUE" : "FALSE");

当心:

  1. 此函数也接受负货币值,如果您不想接受它们,请删除您在-?preg_match

  2. 此函数也返回类似(只有一个小数)的值,如果您希望小数始终为2而不是替换为(但在执行此操作之前,请阅读下面的第3点)TRUE13.7{1,2}{2}

  3. 此函数也返回类似(多个前导零)之类的值,但通常需要这种函数来过滤表单提交的值,然后再将其插入到类型的数据库字段中。当插入这些类型的字段时,MySQL接受查询中的两个值和作为有效值,并自动将它们转换为和TRUE0000.78DECIMAL(n.2)0000.7813.70.7813.70


推荐