2010-04-28 2 views
0

저는 프로그래밍 PHP를 처음 사용하며 양식의 필드 유효성을 검사하려고합니다.기본 regexp 도움말

필드가 RAL 색상 코드 인 경우 RAL 1001과 같습니다. 그래서 문자 RAL 다음 4 숫자.

누군가 나를 정규식으로 설정하여 유효성을 검사하도록 도울 수 있습니까? 내가 성공하지이 시도했다 :

$string_exp = "/^[RAL][0-9 .-]+$/i"; 

내가 말할하지만 PHP에서 완벽한 멍청한 놈 줘서 미안 수있는 것.

건배 벤

+0

'[RAL]'은 다음 문자 중 하나를 의미합니다. "RAL"문자열을 의미하는 경우 대괄호를 제거하십시오. – Amarghosh

답변

1

[RAL]은 문자열 "RAL"과 일치 시키려면 R, A 또는 L 중 하나의 문자와 일치합니다. 그래서 당신은 아마 이것은 당신이 RAL와 숫자 사이의 공간을 원하는 경우 또한 다음 "RAL1001" 아니라 "RAL1", "RAL 1001", "RAL12345" 등 일치하는 정규 표현식으로 그 공간을 둘 것이다

$string_exp = "/^RAL[0-9]{4}$/"; 

이런 식으로 뭔가를 할 수 있습니다.

+0

건배는 매력을 표현했습니다 – casben79

1

중복 문자 클래스를 제거함으로써, 당신은 얻을 것이다 :

/^RAL \d{4}$/i 

대소 문자를 구분 플래그를 사용하면 예를 들어, Ral 1245 또는 raL 9875으로도 이러한 경우에 맞게 만들 것하는 것으로 .

0
/^RAL [0-9]{4}$/ 

그대로 문자를 입력하면 그대로 있습니다. []에 무엇인가를 동봉한다면, "이것들 중 하나 인 한 문자 검색"을 의미합니다.

리터럴 "RAL"로 시작하면 리터럴 "RAL"(또는 i 플래그를 적용 할 때 "ral")을 찾습니다.

0

에 따라 다름!

... 
if(preg_match('/RAL\s*(\d{4})(?!\d)/', $name, $m)) { 
    echo $m[1]; 
} 
... 

이 'someRAL 1234within 텍스트'
을 허용하지만, 'RAL 12345'을 허용하지 않습니다.

정확한 정규 표현식은 사용자의
컨텍스트 또는 사양에 전적으로 달려 있습니다. 귀하의 질문에 더 명확한 해야합니다.

+1

"RAL 색상 코드 인 경우 필드는 RAL 1001이므로 RAL 다음 숫자는 4 개입니다." 나는 이것이 꽤 명백하다고 생각했다. – casben79

+0

casben79, 정식 문제는 비교적 간단합니다./RAL \ d {4} /. 내 질문은, * 그 밖의 무엇입니까? 어떤 형식으로 데이터가 표시됩니까? 다음 중 허용되거나 허용되지 않는 것은 무엇입니까? 'RAL1234', 'RAL. 1234 ','RAL. . 1234 ','xxxRAL1234yyy '등이 있습니다. –