我试图只允许一个单一的角色起诉正则表达式,但它似乎允许多个金额通过。
我试过了..
$char = trim($_REQUEST['char']);
/* Validate char */
if (preg_match('/[^a-zA-Z]{1}/', $char)) {
$char = 'a';
}
echo $char;
和... ..
$char = trim($_REQUEST['char']);
/* Validate char */
if (!preg_match('/[a-zA-Z]{1}/', $char)) {
$char = 'a';
}
echo $char;
但是都不行。即使$_REQUEST['char']
等于aa
,它们也始终输出结果。
答案 0 :(得分:8)
您匹配一个字符,但您不匹配仅一个字符。任何包含至少一个字母字符的字符串都会传递当前的正则表达式。
if (!preg_match('/^[a-zA-Z]$/', $char)) {
$char = 'a';
}
^
表示字符串的开头,$
表示结束。在这种情况下不需要{1}
。
您也可以在strlen($char) == 1
声明中查看if
。
答案 1 :(得分:2)
你走了。您需要使用^来匹配开头,并使用$来匹配您要匹配的字符串的结尾。
<?
$char = "aa";
/* Validate char */
if (preg_match('/^[a-zA-Z]$/', $char)) {
echo "found only ONE char";
} else {
echo "one single char not found"
}
?>