我试图只允许一个字符使用regex,但似乎它是允许多个金额通过。
I have try this.
$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
。
您正在匹配一个字符,但您不是只匹配一个字符。任何至少有一个alpha字符的字符串都将传递当前的正则表达式。
if (!preg_match('/^[a-zA-Z]$/', $char)) {
$char = 'a';
}
^
表示字符串的开始,$
表示字符串的结束。在这种情况下不需要{1}
。
您也可以在if
语句中检查strlen($char) == 1
给你。您需要使用^来匹配开始,使用$来匹配字符串的结束。
<?
$char = "aa";
/* Validate char */
if (preg_match('/^[a-zA-Z]$/', $char)) {
echo "found only ONE char";
} else {
echo "one single char not found"
}
?>