2014-12-27 2 views
0

아직 완전히 이해하지 못했다고 생각하는 PHP 문자 클래스에 대해 알고 싶습니다. 우리가 w3schools.com에서이 코드 조각을 보자 :PHP 정규 표현식 - 문자 클래스

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["name"])) { 
    $nameErr = "name is required"; 
    } else { 
     $name = test_input($_POST["name"]); 
     if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
      $name = ""; 
      $nameErr = "Only letters and white space allowed"; 
     } 
    } 
} 

이의는의 닫는 대괄호 옆에 별표 (*)가 세 번째 "경우"조건이 존재하지 않았다고 가정 해 봅시다. 다시 말해, "0 번 이상"이 아니라 단순히 "한 번"이라고 말합니다.

내 질문은 다음이다 : 나는 제이슨과 같은 이름을 입력 한 경우

  • , 나는 오류 메시지가 표시 것인가?
  • * 기호가 없으면 문자 클래스는 하나의 문자와 만 일치 할 수 있습니까?
  • 즉, 단순히 Jason이 아닌 텍스트 필드에 J를 입력했다면 해당 입력을 인쇄 할 수 있습니까?

뷰어가 소스 코드를 변경할 수 없기 때문에 w3schools.com에서 테스트 할 수 없습니다. 나는 코드 "/ ([a-zA-Z]) /"를 입력하고 Jason 문자열에 대해 테스트 할 때 모든 문자가 일치하는 대신 온라인 정규식 검사기 http://www.regexr.comand을 사용하고 있습니다! 이것은 사실이 아니어야합니다. 나는 틀린 것을 얻어야한다.

+0

정규 표현식 및/또는 PHP를 배우려면 실제로 코드를 실행하기 위해 조만간 설치해야합니다. 순수한 이론 교육은 불가능하다고 생각합니다. –

+0

그리고, BTW,'^'는 "start with"를 의미하고'$'는 "end with"를 의미합니다. 그것이 실제로 차이를 만드는 것입니다. –

+0

['Here'] (http://www.regular-expressions.info/tutorial.html)는 – Enissay

답변

1

^$ 마커를 제거하면 규칙에 "어딘가에 문자가 있습니다"라고 표시됩니다. Jason이이를 수행합니다.

1

^ 마커는 "문자열의 시작"을 나타내고 $은 "문자열의 끝"을 나타냅니다.

별표를 제거하면 "Jason"이 (가) 일치하지 않지만 "J"는 나타납니다.

PCRE 정규 표현 패턴에 대한 참조는 PHP manual에 있습니다.

로컬로 코드를 테스트하여 실행할 수없는 경우에도 PHP Fiddle에서 코드 단편을 실행할 수 있습니다. example patterns in the manual으로 게임을하는 것이 좋습니다.

+0

구스타브 그 해명을 가져 주셔서 감사합니다. 매우 감사. – Jason12