2012-04-07 2 views
2

preg_match를 사용하여 숫자 1 - 21과 일치 시키려합니다. preg_match를 사용하여 어떻게 할 수 있습니까? 숫자가 21보다 크면 나는 무엇이든 일치시키고 싶지 않습니다.PHP preg_match range

example preg_match('([0-9][0-1]{0,2})', 'Johnathan 21'); 
+4

올바른 해결책을 정규식으로 제한 할 필요가 없다고 생각합니다. 다른 접근법 (예 : 정규식에서'[0-9] {1,2} '캡처 및 나중에 유효성 검사)이 더 쉬울 수도 있습니다. http://blogs.msdn.com/b/oldnewthing/archive/2006/05/22/603788.aspx – DCoder

+0

@DCoder : 답변 일 것입니다. –

+0

참. 정규식을 사용하는 것이 훨씬 간단하다고 생각했습니다. – James

답변

2

comment above에서 복사 :

단순히 어쩌면 \b에 싸여 ([0-9]{1,2})을 (일치하는 것이 좋습니다, 기반 입력 형식) 및 숫자 값 필터링 나중에, PHP 코드에서.

도 참조하십시오. Raymond Chen's thoughts on the subject

+0

감사합니다. '\ d +'를 사용하여 숫자를 배열에 일치시킨 다음 1에서 21 사이의 숫자인지 확인했습니다. – James

1

말 그대로 :

preg_match('~ (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21)$~', 'Johnathan 21'); 

하지만 어쩌면이 더 멋진 것입니다 :

preg_match('~ ([1-9]|1[0-9]|2[01])$~', 'Johnathan 21'); 
+0

이 예는 모든 숫자와 일치합니다. – James

+0

어느 것? 무엇을 위해서? 나는 그것을 욕심을 먹어야 하는가? – hakre

+0

예. 나는 이것을 욕심 많게하고 싶다. – James