只允许一个字母字符 - 正则表达式
问题描述:
我想只允许一个单独的字符起诉正则表达式,但它似乎允许通过多个数量。只允许一个字母字符 - 正则表达式
我已经试过这个..
$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
,他们也会输出结果。
答
您正在匹配一个字符,但您不匹配只有一个字符。任何至少有一个字母字符的字符串都会传递你当前的正则表达式。
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"
}
?>
谢谢。我实际上尝试过,就像我在上面给出的第一个例子那样,但它不起作用,会在第二个例子中尝试。 – Brett 2011-12-21 19:30:24