2012-06-27 2 views
0

얼마전에 번호판을 확인하기 위해 preg_match 코드를 만들었습니다.PHP preg_match 숫자 또는 문자 쌍

return preg_match("/^([0-9A-Za-z])"."([0-9A-Za-z])"."(\-([0-9A-Za-z])"."([0-9A-Za-z]))"."(\-([0-9A-Za-z])"."([0-9A-Za-z]))$/", $kenteken); 

그것은이 같은 번호판을 확인 : u0-99-e5 그래서 숫자 또는 문자하는 - 다음 동일한 다시.
이제 내 선생님에 따르면 해결책이 아니 었습니다. 숫자 나 글자의 쌍을 확인해야합니다. 예를 들어 99-oo-ii입니다.

어떻게 코드를 변경하여 코드를 검사합니까?

미리 감사드립니다.

+2

밤은이 속임수라고? – craig1231

+0

그는 포럼 등에서 도움을 얻을 수 있다고 말하지 않았습니다.) –

+1

/i case insensitivity 플래그를 사용하여 패턴을 조금 더 짧고 읽기 쉽게 만들 수 있습니다. 예를 들어'/ [0-9A-Za-z] /'대신'/ [0-9a-z]/i'를 사용할 수 있습니다. –

답변

1

이미 캡처 한 내용과 일치 시키려면 역 참조를 사용하십시오. 역 참조는 \1, \2, \3 등이며 여기서 숫자는 참조하는 캡처하는 하위 패턴의 위치입니다.

예를 들어, /^([0-9A-Za-z])\1/은 숫자 나 문자 뒤에 숫자 나 문자가 일치합니다.

+0

코드에 구현되지 않습니다. 예제를 만들 수 있습니까? –

0

당신은 당신의 문자열을 연결하지 않아도,

return preg_match("/([0-9A-Za-z])\1-([0-9A-Za-z])\2-([0-9A-Za-z])\3/", $kenteken); 
+0

아직 작동하지 않습니다. (아직) –

+0

두 개 모두 필요하지 않을 수도 있습니다 "및 /? http://www.spaweditor.com/scripts/regex/를 사용하여 테스트했습니다. – SpacedMonkey