Php preg_match()$格式有问题

Php preg_match()$格式有问题,php,Php,我正在查看preg_match指令,但我很难收集到只允许使用某些字符所需的内容,以及如何将其实现为模式格式 if(preg_match('[0-9.$M]', $_POST['budget']) === true) { $errors = 'no illegal'; } else { //I

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

                        if(preg_match('[0-9.$M]', $_POST['budget']) === true) {
                            $errors = 'no illegal';
                        } else {
                            //Illegal character in budget
                            $errors = 'illegal';
                        }
但我意识到,对于一个不适合这种组合的人来说
0123456789$M.
而且即使我让它工作,它也不会像我希望的那样工作。因为我需要检查$_POST['budget'],并确保它的格式正确,然后再继续。它只能包含我提出的字符,其他任何东西都会造成相当大的混乱

到目前为止,我已经让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';
}

您忘记了
/delimiters/
。立即向下投票,很好…-耸耸肩-这是一个打字错误问题。打字错误问题会被否决和否决。这不是一个打字错误,如果你阅读完整的问题,它会问你如何确保正确的字符在那里,以及如何不允许任何可能在那里的字符..?你似乎对正则表达式缺乏基本的理解。。。只要谷歌搜索任何简单的教程,或者更好。