2011-02-03 2 views
0

당신을 위해 정규 표현식에 대해 조언 할 수 :정규 표현식 값 같지 않음

NOT EQUAL 문자열 1 TO, 문자열 2, string3 및 대소 문자를 구분하지

I 다음,하지만 내가 원하는 걸 포기하지 않은 .

/^(?!string1|string2|string3)$/ 

감사

답변

2

내가 잘못된 경로에있어 경우에 미안하지만, 왜 부정하지를?

if (!preg_match("/^(string1|string2|string3)$/i",$str) { 
    // ... 
} 
+0

+1 그 이유를 생각하지 못했습니다 : D –

+0

가끔은 너무 분명합니다 :) – aorcsik

+0

감사합니다 - 당신이 제공 한 것에서 그것을 알아 냈습니다. 완전한 정규 표현식 ('string1 | string2 | string3). $/i' – drs

1

당신은 정규식에 AND하지 OR해야합니다. 문자열이 string3 인 경우 string1string2과 같지 않으므로 일치합니다. 정규 표현식으로는이를 해결할 수 없습니다 (최소한 내가 읽을 수있는 방식이 아님).)).물론 일치 항목의 결과를 반대로 표시 할 수 있습니다.

는 또한 (더 쉽게 유지 관리 할 수 ​​있습니다) 비 정규식 접근 방식을 사용할 수 : 긍정적 인 경기

$blacklist = array('string1', 'string2', 'string3'); 

if(!in_array(strtolower($str), $blacklist)) { 

} 
0

시도해 볼 수 있습니까? 경우 (는 preg_match ('/ (문자열 1 | 문자열 2 | string3)/난', $ str을)!)

0

내가 찾아야 할 때 이것을 사용 "를 포함하지 않는 파일을 ..."

(? s) \ A ((?! Copyright)) * \ Z

이것은 "저작권"문자열입니다. 필요에 따라 문자열을 대체하십시오. \ A (파일의 시작) W \ Z (파일의 끝)와 같은.