货币正则表达式(欧元)

时间:2011-06-03 00:48:27

标签: php regex validation

我正在尝试使用此代码对值进行验证。 (来自此site的正则表达式)

更新:

现在我有

$value1=250;    

$value2=10000;

        if (!preg_match("/^(([^0]{1})([0-9])*|(0{1}))(\,\d{2}){0,1}€?$/", $form['salary']) || (!$form['salary'])>$value1."€" && (!$form['salary'])<$value2."€" ){
        echo ("invalido");
        return false;
    }
    else
    echo ("valido");
    return true;

代码效果很好,但是接受了20€,所以问题现在不是正则表达式,而是比较200€或1000€等值。

这可能是错误的

(!$form['salary'])>$value1."€"

示例一些输入值:

    200€
    200
    200.5
    200.50€

limits - 250€ to 10000€

感谢

3 个答案:

答案 0 :(得分:2)

下面这段代码解决了我的问题:

if (!preg_match("/^(([^0]{1})([0-9])*|(0{1}))(\,\d{2}){0,1}€?$/", $form['salary'])) {
    echo "invalid";
    return false;
} else {
    $value1 = 400;
    $value2 = 10000;
    $salary = $form['salary'];
    $salary = preg_replace('/[€]/i', '', $salary);
    if($salary < $value1 || $salary > $value2) {
        echo "bad values";
        return false;
    } else {
        echo "valid";
        return true;
    }
}

答案 1 :(得分:0)

正则表达式解决方案看起来像这样

^(?:10000|(?:(?:(?:2[5-9]\d)|[3-9]\d{2}|\d{4})(?:[,.]\d{2})?))€?$

Regexr

上在线查看

但最好检查一个值是否属于某个范围,而不是使用正则表达式。您可以轻松地提取值并执行正常的&lt;&gt;检查外面的数字。

答案 2 :(得分:0)

我的贡献。它很棒。

final Pattern pattern = Pattern.compile("^([0-9]+)|((([1-9][0-9]*)|([0-9]))([.,])[0-9]{1,2})$");