我试图通过创建简单的样本来学习PHP中的正则表达式。这里有一个非常简单的例子:
if($_POST){
$errors = array();
if(isset($_POST['name'])){
if(!preg_match('/^([a-zA-Z]{3,8})$/',$_POST['name'])){
$errors['name1'] = "Must enter Alphabet";
$errors['name2'] = ""Cant be less than 3";
}
}
if(count($errors)==0){
header("Location: pro.php");
exit();
}
}
?>
<form method="POST" target="">
First name: <input type="text" name="name"><br>
<input type="submit" name="submit">
</form>
对我来说,验证工作正常但我在基于错误呈现错误消息时遇到问题。例如,我想仅在未输入字符串时显示错误$errors['name1']
而在数字时显示$errors['name2']
进入。
我试图将表达式分为两个标准:
if(isset($_POST['name']))
{
if(!preg_match('/^([a-zA-Z])$/',$_POST['name']))
{
$errors['name1'] = "Must enter Alphabet";
}
if(preg_match('/^{3,8}$/',$_POST['name']))
{
$errors['name2'] = "Cant be less than 3";
}
}
但我收到了以下错误
更新
if(isset($_POST['name']))
{
if(!preg_match('/^([a-zA-Z])$/',$_POST['name']))
{
$errors['name1'] = "Must enter Alphabet";
}
if ( ! preg_match( '/.{3,8}/', $_POST['name'] ))
{
$errors['name2'] = "Cant be less than 3";
}
}
答案 0 :(得分:0)
您看到的错误是在{}运算符之前未在正则表达式中指定匹配条件的结果。如果您只关心是否输入了至少三个任何字符,请尝试
if ( ! preg_match( '/.{3,8}/', $haystack ) )
您必须为要计算的范围提供“原子”。在这种情况下, '。'表示任何单个字符。
答案 1 :(得分:0)
怎么样:
if (isset($_POST['name'])) {
if (preg_match('/[^a-z])/i', $_POST['name'])) {
$errors['name1'] = "Must enter Alphabet";
}
if ( strlen($_POST['name']) < 3) {
$errors['name2'] = "Cant be less than 3";
}
if ( strlen($_POST['name']) > 8) {
$errors['name3'] = "Cant be more than 8";
}
}
如果你真的想使用正则表达式:
if (preg_match('/[^a-z])/i', $_POST['name'])) {
$errors['name1'] = "Must enter Alphabet";
}
if ( ! preg_match('/^.{3,8}$/', $_POST['name']) ) {
$errors['name2'] = "Cant be less than 3";
}
答案 2 :(得分:0)
好的我将回答我的问题。感谢Masud Alam我想出了如何在正则表达式中做到这一点。提示正在使用
if (!preg_match('/^[a-z]+$/i', $_POST['name'])) {
//
}
if (!preg_match('/^.{3,25}$/', $_POST['name'])) {
//
}
到目前为止它对我有用!