그래서 전화 번호를 입력하는 양식의 HTML 필드가 있습니다. 그것은() 또는 -를 사용할 때 올바르게 검증합니다. 그러나 555 123 4567이라고 말하면 555를 반환합니다. 언제나 그렇듯이 도움을 주시면 감사하겠습니다.regex는 전화 번호의 유효성을 검사하지만 perl을 사용하여 공백을 잘라냅니다.
여기에 내 코드 당신이 지나치게 복잡한 모양을 사용하는 정규식
my $userName=param("userName");
my $password=param("password");
my $phoneNumber=param("phoneNumber");
my $email=param("email");
my $onLoad=param("onLoad");
my $userNameReg = "[a-zA-Z0-9_]+";
my $passwordReg = "([a-zA-Z]*)([A-Z]+)([0-9]+)";
my $phoneNumberReg = "((\(?)([2-9]{1}[0-9]{2})(\/|-|\)|\s)?([2-9]{1}[0-9]{2})(\/|-|\s)?([0-9]{4}))";
my $emailReg = "([a-zA-Z0-9_]{2,})(@)([a-zA-Z0-9_]{2,})(.)(com|COM)";
if ($onLoad !=1)
{
@controlValue = ($userName, $password, $phoneNumber, $email);
@regex = ($userNameReg, $passwordReg, $phoneNumberReg, $emailReg);
@validated;
for ($i=0; $i<4; $i++)
{
$retVal= validatecontrols ($controlValue[$i], $regex[$i]);
if ($retVal)
{
$count++;
}
if (!$retVal)
{
$validated[$i]="*"
}
}
sub validatecontrols
{
my $ctrlVal = shift();
my $regexVal = shift();
if ($ctrlVal =~ /^$regexVal$/)
{
return 1;
}
return 0;
}
}
*html code is here*