preg_match()$pattern格式问题


preg_match() $pattern issues with format

我正在查看preg_match指令,但很难收集到只允许使用少数字符所需的内容,以及如何将其实现为模式格式

                        if(preg_match('[0-9.$M]', $_POST['budget']) === true) {
                            $errors = 'no illegal';
                        } else {
                            //Illegal character in budget
                            $errors = 'illegal';
                        }

但我意识到,对于一个不适合这种组合的人来说0123456789$M.,即使我让它工作,它也不会像我希望的那样工作。因为我需要检查$_POST[预算],并确保它的格式正确,然后再继续操作。它只能包含我提出的字符,其他任何东西都会造成很大的混乱。

到目前为止,我已经让javascript更改了任何条目,但如果禁用了这一功能,他们可以随心所欲地输入。

所以我需要的是伪

if (preg_match($allowed_characters, $_POST['budget'] === true && DOESNT CONTAIN ANY OTHER CHARACTERS) {
    //No illegal characters
} else {
    //Illegal characters!!
}

1)preg_match返回INT或BOOL false。

2) 您的模式对preg_match 无效

应该是这样的:

if(preg_match('/[^0-9'.'$M]+/', '0123456789$M.')) {
    $errors = 'illegal';
} else {                        
    $errors = 'no illegal';
}