如果存在十进制分隔符(点(。)或逗号(,)和千位分隔符(逗号(,)或点(。)),则应按模式处理传入值。 我目前的代码是
if (!preg_match('/^((?:(?:\-?[\d' . $thousandSeparator . ']+(?:' . $decimalSeparator . '\d+)?)|\s*))\s*(.*)$/', $value, $matches))
{
throw_error;
}
案例1 - $ decimalSeparator ='。';; $ thousandSeparator =',';
允许的案例 -
不允许的情况 -
案例2 - $ decimalSeparator =','; $ thousandSeparator ='。';
允许的案例 -
不允许的情况 -
注意 - 'cm'是厘米,可变,可以是英寸,毫米,公里等。单位可以存在或不存在,但如果存在,则需要处理。现在我随机放置了这个单元,请不要考虑单元,因为它是精确的方式。
感谢。 :)
答案 0 :(得分:3)
你可以像这样构建你的模式:
$units = ['[mck]m', 'inch']; // complete it
$pattern = sprintf('~^-?\d{1,3}(?:[%s]\d{3})*(?:[%s]\d\d)?(?: (?:%s))?$~', $thousandSep, $decimalSep, implode('|', $units));