Php 如何检查$#u POST[';input';]是否只包含允许的字符
如何检查输入是否仅包含一个或多个允许的字符:Php 如何检查$#u POST[';input';]是否只包含允许的字符,php,validation,input,Php,Validation,Input,如何检查输入是否仅包含一个或多个允许的字符: a-z,a-z,0-9 所以我的支票必须是这样的: if ($_POST ['input'] != 'a-z, A-Z, 0-9') { exit; } else { //do stuff 您只需使用即可获得所需的结果,如: <?php $string = 'Mike123'; // string if(preg_match("/^[a-zA-Z0-9]+$/", $string)) { echo 'do nothing'; } else
a-z
,a-z
,0-9
所以我的支票必须是这样的:
if ($_POST ['input'] != 'a-z, A-Z, 0-9') {
exit;
}
else {
//do stuff
您只需使用即可获得所需的结果,如:
<?php
$string = 'Mike123'; // string
if(preg_match("/^[a-zA-Z0-9]+$/", $string)) {
echo 'do nothing';
}
else{
echo 'do something';
}
?>
您可以使用来测试输入数据。如果您希望这些字符集中至少有一个,可以使用
if (preg_match('/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])/', $_POST['input'])) {
// do stuff
}
if (preg_match('/[a-zA-Z0-9]/', $_POST['input']))
if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['input']))
(此正则表达式使用3个正向lookahead以确保三个集合中的每个集合都有一个字符)
如果您只需要整个集合中的一个或多个,可以使用
if (preg_match('/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])/', $_POST['input'])) {
// do stuff
}
if (preg_match('/[a-zA-Z0-9]/', $_POST['input']))
if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['input']))
如果希望所有字符都在该集中,可以使用
if (preg_match('/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])/', $_POST['input'])) {
// do stuff
}
if (preg_match('/[a-zA-Z0-9]/', $_POST['input']))
if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['input']))
我对每个正则表达式都做了一些演示
请注意,只要同时需要A-Z
和A-Z
集合,就可以通过在正则表达式上使用i
修饰符简化后两个正则表达式(不区分大小写):
不需要
==1
。使用i
模式修改器,可以缩短字符类。您的答案不允许使用任何其他字符。@mickmackusa:是的,您是对的,请尝试分享更具体的示例。这个答案通过ctype_alnum()
@mickmackusa:是的,我正在探索这个问题,并将更新我的答案,不是为了引起OP的注意,只是为了将来的访问者。@Jackctype_alnum()
是解决澄清问题的最佳工具。这是您和未来研究人员应该实施的解决方案。您可能需要重新考虑绿色记号的位置。@Jack请提供一组输入字符串以及您对每个字符串的预期结果。这通过上下文澄清了您的问题。正则表达式呢?@mickmackusa当然适用于第三种选择(其中所有字符都必须是字母数字)。原来的问题只要求至少一个,这样就不适合了。@nick:同意。。。