我有几个有关使用正则表达式来验证表单中的某些字段的快速问题。但我似乎有一些问题。使用正则表达式验证表单中的HTML字段使用perl
所以这里是代码
$userNameReg = "[a-zA-Z0-9_]+";
$passwordReg = "([a-zA-Z]*)([A-Z]+)([0-9]+)";
$emailReg = "[a-zA-Z0-9_]@[a-zA-Z]\.[a-zA-Z]{2,3}";
if ($onLoad !=1)
{
@controlValue = ($userName, $password, $phoneNumber, $email);
@regex = ($userNameReg, $passwordReg, "phoneNumber", $emailReg);
@validated;
for ($i=0; $i<4; $i++)
{
$retVal= validatecontrols ($controlValue[$i], $regex[$i]);
if ($retVal)
{
$count++;
}
if (!$retVal)
{
$validated[$i]="*"
}
}
sub validatecontrols
{
$ctrlVal = shift();
$regexVal = shift();
if ($ctrlVal =~ /$regexVal/)
{
return 1;
}
if ($ctrlVal !~ /$regexVal/)
{
return 0;
}
}
}
那么,什么情况是,它仍然验证特殊字符,我不明白为什么。如果我输入一个特殊字符,但是它的中间部分,它的开始或结束验证,它确实会抛出一个标志。
也请忽略电话号码部分,因为我还没有到那个部分呢。我仍然必须创建验证电话号码的正则表达式,仅限数字,大于2的第一个数字。
非常感谢大家的帮助和洞察力。
干杯
+1
您不应该尝试为电子邮件地址验证等事情创建自己的正则表达式;他们是很难得到正确的。使用[电子邮件::有效]模块(https://metacpan.org/pod/Email::Valid)。 –
+0
指导者希望我们创建自己的正则表达式,作为作业的一部分 –
+0
您需要在电子邮件正则表达式[a-zA-Z0-9 _] + @ [a-zA-Z + ] + \。[a-zA-Z] {2,3}' –