2014-06-05 4 views
0

명백한 성공없이 답을 찾고 있습니다.은 가능한 문자와 숫자를 일치시킵니다.

게시 된 QR12345678 값에 대해 preg_match를 사용하여 게시 데이터 확인을하고 있습니다. QR은 제출 될 수도 안될 수도 있습니다. 아래 행운과 함께 다양한 preg_match를 사용했습니다. 다음 인라인 상태 그래서, $some_id 반환 0 상관없이

$some_id = isset($_POST['some_id']) 
     && preg_match('/[A-Z]{1,3}*[0-9]{4,10}/', $_POST['some_id']) 
    ? $_POST['some_id'] 
    : 0; 

에서 preg_match를 사용

preg_match('/^[A-Z]{1,3}[0-9]{4,10}$/', $_POST['some_id']) 
preg_match('/^[A-Z]{1,3}?[0-9]{4,10}$/', $_POST['some_id']) 
preg_match('/([A-Z]{1,3})?[0-9]{4,10}$/', $_POST['some_id']) 
preg_match('/^([A-Z]{1,3})?[0-9]{4,10}$/', $_POST['some_id']) 
preg_match('/[A-Z]{0,3}[0-9]{4,10}/', $_POST['some_id']) 
preg_match('/([A-Z]{1,3})*[0-9]{4,10}$/', $_POST['some_id']) 

. 실제로 코드에서 사용하고 그

+2

'/^([AZ]를 {1,3}) [0-9] {4,10}는 $ /'작동합니다을 , 문제는 무엇입니까? – anubhava

+0

2 글자 다음에 8 자리 숫자가 올까요? 에 묶여? –

+1

허용되는 패턴을보다 명확하게 설명해 주시겠습니까? 그것은 2 글자 또는 없음입니까? 또는 1 ~ 3 글자도 허용됩니까? – Barmar

답변

1

오류는 패턴에 있습니다

> echo preg_match('/[A-Z]{1,3}*[0-9]{4,10}/',"QR12345678"); 
< PHP Warning: preg_match(): Compilation failed: nothing to repeat at offset 10 in php shell code on line 1 

작동하지 않는 부분이 바로 서로 두 번째 후 2 한정사가 {1,3}* (이다 *)는 반복 할 내용을 알지 못합니다. 어느 중복 * 한정 기호를 제거하거나 다른 제안 패턴 중 하나를 사용?

> echo preg_match('/[A-Z]{1,3}[0-9]{4,10}/',"QR12345678"); 
< 1 
> echo preg_match('/^([A-Z]{1,3})?([0-9]{4,10})$/',"QR12345678"); 
< 1 
+0

내 상황에 두 번째 사용하기 – spiderling

관련 문제