2015-02-05 1 views
0

사용자가 이메일 주소를 입력하고 정규식과 일치 검색 기능을 사용하여 유효성을 검사하도록합니다. 다른 이메일 확장 프로그램 (hotmail, gmail, blueyonder 등)의 유효성을 검사하는 코드를 얻을 수 없어 코드를 OR 함수로 받아 들일 수 없으며 코드에서 OR 함수를 사용할 수 없습니다. 특정 오류가 발생하지는 않지만 사용자가 'gmail.co.uk'확장명을 사용하도록 제한해야합니다. 어떤 도움이 필요합니까?정규 표현식을 사용하여 하나 이상의 이메일 확장 프로그램의 유효성을 검사하는 중

코드 :

<?php 
$emailErr = ""; 
$email = ""; 

if(isset($_POST['submit'])){ 

if(empty($_POST["email"])) { 
$emailErr = "Email is required"; 
}else{ 
$email = ($_POST["email"]); 

if (!preg_match("/[a-zA-Z_-][email protected][gmail]+.+[co]+.+[uk]/",$email)){ 
$emailErr = "Only letters and white space allowed"; 

} 
} 
} 

?> 
<html> 

<head> 

<title> symbol test</title> 

<style> 

.error {color: #FF0000;} 

</style> 

</head> 

<body> 

<form name = "testform" method="POST"> 

<p>Email:<input type="text" name="email" style="width:20%"/> 
<span class="error">*<?php echo $emailErr;?></span> 

    <p><br><input type="submit" name="submit" value="Submit"/></br></p> 

</form> 

    <?php 

echo $email; 

?> 
</body> 

</html> 

답변

1

[gmail] 갈 실제 방법이 아닙니다. 이것은 g 또는 m 또는 a 또는 i 또는 l과 일치합니다.

[a-zA-Z_-][email protected]\.co\.\uk 

필요한 경우 앵커를 추가하십시오. 유효한 이메일 ID의 모든 종류에 맞게 일반적인 정규식을 찾는 경우

if (!preg_match("~^[a-zA-Z_-][email protected]\.co\.uk$~",$email)){ 
0

당신은 자세한 개요에 대한 regex demo에서

^(?![\W_])((?:([\w-]{2,})\.?){1,})(?<![\W_])@(?![\W_])(?=[\w.-]{5,})(?=.+\..+)(?1)(?<![\W_])$ 

룩을 시도 할 수 있습니다.