2011-01-26 2 views
1

저는 정규식에 익숙하지 않습니다. 누군가가이 정규식이하려고하는 것을 말해 줄 수 있습니까? 부울 또는 배열을 반환합니까? AZ에서 하나 개의 문자 스트링의 시작이 정규식 또는 preg_match 검사는 무엇입니까

$res = preg_match('#^[A-Z]{1}([0-9]{1,3})?((\.[0-9]{1,3}){0,2})?$#i', $value); 

답변

1
  • 검색^[AZ] {1}
  • 공간 (? 마지막에) 포함되지 않을 1-3 자리 하였다 : ([0-9] {1,3})?
  • 다음에 점과 1-3 자리 (0-2 회 반복)가 포함될 수 있습니다. ((. [0-9] {1,3}) {0,2})?
4

고장 ...

  • ^[A-Z]{1}

    - 라인의 시작, 경기 AZ에서 하나 개의 문자 ...에서 [A-Z]
  • ([0-9]{1,3})? - 하위 그룹 \ 1 - 하나의 공간과 일치는 다음 숫자 [0-9] 1-3 자 긴 {1,3}, ? 선택 사항.
  • ((\.[0-9]{1,3}){0,2})?$ - 하위 그룹 \ 3 (\ 2에 중첩) - 리터럴 . 다음 숫자 [0-9] 1-3 자리 {1,3}, 경기이 이전 그룹의 0-2 {0,2} 및 선택적으로 인해 ?에 일치의 $는 것을 지정 이 일치는 줄 끝에서 수행됩니다.

  • i - 끝 정규식, 무시 대소 문자. 즉, 예를 들어 첫 번째 [A-Z]은 일치 항목을 변경하지 않고 [a-z] 일 수 있습니다.

몇 가지 가능한 샘플 :

B 472.983.421  (\1 = " 472" \2 = ".983.421") 

A     (\1 = "" \2 = "") 

C 18.1.1   (\1 = " 18" \2 = ".1.1") 

D 0.0.0   (\1 = " 0" \2 = ".0.0") 

d 0.0.0   (\1 = " 0" \2 = ".0.0") # works due to the #i option. 

등등.

+0

그래서 IP 주소 같은 것을 찾으려고합니까? – samquo

+0

IP는'[A-Z]'의 선두가 필요없고'[0-9] {1,3}'그룹의'{4}'와 일치 할 필요가 있습니다. 단지 임의의 연속 또는 참조 번호처럼 보입니다. IP 검색을 수행하는 경우 [0-9]의 값을 0-299가 아닌 0-255로 제한하여 오 탐지 (false positives)를 피할 수 있습니다. – ocodo

+1

+1. 그리고 아무도 그것을 언급하지 않았기 때문에 : [A-Z] {1}의'{1}'은 공백을 차지하지 않습니다. –

1

preg_match은 항상 int (일치하는 경우 1, 그렇지 않은 경우 0)를 반환합니다. 배열을 원한다면 결과로 채워지는 참조로 thrid 매개 변수를 받아들입니다.

검색 문자열

1

# 개시는

로^시작 [A-Z] {1} 하나 대문자로 시작

([0-9] {1,3})? 뒤에 공백과 3 자리가 올 수 있습니다.

((. [0-9] {1,3}) {0,2})? 아마도 다음 도트의 패턴 다음 1-3 숫자 0, 1 또는 두 번

$는

# 끝 일치하는 문자열

난 케이스를 구분 검색

이전 검색 critera 후 (즉, 아무것도 끝