2009-06-03 2 views
2

패턴 ^[a-zA-Z0-9 .\-_]+$과 문자열 te\\st이 주어지면 일치 항목이 왜 긍정적입니까? 사용자 이름의 유효성을 검사하기 위해이 방법을 사용하고 있으며 사람들이 사용자 이름에 슬래시를 넣지 않도록하고 URL을 사용합니다.이 정규식이 양수와 일치하는 이유는 무엇입니까?

ereg($pattern, $username), PHP 버전 5.2.8을 실행 중입니다.

답변

7

ereg은 미친입니다. 나는 그것을 피하는 것이 좋습니다. 당신은이에 대한 preg_match를 사용하여 시도해야합니다 :

$count = preg_match('/^[a-zA-Z0-9 .\-_]+$/', 'te/\st', $matches); 
print_r($matches); // empty array (no matches) 
print $count; // 0 (no matches) 
+0

감사가있는 경우

Further reference.

은 그리고, 그 :) 일 – Aistina

3

^[a-zA-Z0-9 ._-]+$

은 잘 작동합니다. 리터럴을 일치시키기 위해서 - 캐릭터 클래스에서, 보통 엔딩 바로 직전에 놓는 것이 가장 안전합니다. [ereg (POSIX)를 사용할 때]를 열면 바로 나타납니다. 당신은 밖으로 탈출 할 수 있어야합니다. - 그러나 어떤 이유 때문에 직접 탈출 할 때. 실패로 보인다. 어쨌든 ereg를 사용해야하는 경우 해결책이 있습니다. 왜 그것이 실패하는지에 관해서 정말로 좋은 질문입니다. 문자 클래스 내의 정상적인 문자 여야합니다. Ereg는 버그입니다. 당신은 선택의 여지가 사용 레그 (PCRE) ...

관련 문제