2010-12-29 2 views
1
$first = "."; 
$last = "a"; 
$middle= "testing-123.test"; 

if (preg_match("[a-zA-Z0-9]", $first)){ 
echo 'Frist Returned valid.'; 
} 
if (preg_match("[a-zA-Z0-9.-]", $middle)){ 
echo 'Middle Returned valid.'; 
} 
if (preg_match("[a-zA-Z0-9]", $last)){ 
echo 'Last Returned valid.'; 
} 

내가 원래 텍스트가 ".testing-123.testa"이었다이 예에서는 있도록 SUBSTR을 사용하여 3 개 부분으로 문자열을 분해하고있다. 여기에는 substr을 포함하지 않았지만이 경우 변수를 미리 정의했습니다.빠른 PHP 정규식 질문 (코드 포함)

첫 번째 문자 : 나는 다음과 같은 요구 사항을 의미하므로 확인하려면 A-Z, A-Z, 0-9 NO 심볼

중간 문자 : A-Z, A-Z, 0-9 만. 및 기호

마지막 문자 : 첫 번째 문자와 동일.

위 코드를 실행하면 아무 것도 울리지 않습니다. 어떤 아이디어?

답변

4

당신이 누락 delimitters, 당신의 정규식 주위에 /을 추가하려고 :

if (preg_match("/[a-zA-Z0-9]/", $first)){ 
echo 'Frist Returned valid.'; 
} 
if (preg_match("/[a-zA-Z0-9.-]/", $middle)){ 
echo 'Middle Returned valid.'; 
} 
if (preg_match("/[a-zA-Z0-9]/", $last)){ 
echo 'Last Returned valid.'; 
} 

은 또한 더/모든 인스턴스를 찾을 preg_match_all을 사용할 수 있습니다.

+0

감사합니다. 어떤 아이디어를 제외하고 $ middle = "testing-12 $ 3.test"; 유효한 것으로 중간을 반환합니까? 달러 기호는 내가 말하지 않은 기호입니다 ... – NoviceCoding

+0

이 정규식은 문자 (대문자 또는 소문자), 숫자, 점 또는 하이픈 인 문자를 확인합니다 : /[a-zA-Z0-9.-] /. 일치하는 것을 찾으면 서 멈추고 참을 반환합니다. 기본적으로 첫 번째 문자 인 t를 사용하고 정규식 패턴과 비교합니다. t는 일치하므로 true를 반환하고 중지합니다. Tim Pietzcker의 대답을 확인하십시오. –

0
if (preg_match("/^[a-z0-9]+$/i", $first)){ 
echo 'First Returned valid.'; 
} 
if (preg_match("/^[a-z0-9.-]+$/i", $middle)){ 
echo 'Middle Returned valid.'; 
} 
if (preg_match("/^[a-z0-9]+$/i", $last)){ 
echo 'Last Returned valid.'; 
} 

은 필요한 것을 처리해야합니다.

당신은 구분 기호 (/)가 필요합니다, 당신은 모든 문자가 문자열 (^$ 앵커)의 처음부터 끝까지 테스트하고 있는지 확인해야합니다.

+0

완벽하게 작업했습니다. 대답과 설명에 감사드립니다 !!!! – NoviceCoding