카테고리 없음

[regex] IE 버전을 확인하는 정규식

행복을전해요 2020. 12. 11. 00:25

Do not look for occurrences of MSIE 6.0 to block, detect the version as a floating point number with code like this: (You didn't specify a language so I give the example in PHP)

preg_match( '/MSIE ([0-9]{1,}[\.0-9]{0,})/', $userAgent, $matches );
$version = float( $matches[1] );
if( $version <= 6.0 ) {
    // BLOCK
    }
    

The code above will use the first occurrence of MSIE x.x to detect the version and will ignore the rest.

UPDATE:

In Javascript:

var re = new RegExp('/MSIE ([0-9]{1,}[.0-9]{0,})/g');
if(re.exec(userString) != null) {
   version = parseFloat(RegExp.$1);
   }
   
-------------------

userAgent"브라우저 스니핑 (browser sniffing)"이라고하는 프로세스가 안정적으로 작동하지 않는다는 것을 수없이 많이 들어 보셨을 것 입니다. 브라우저는 언제 어디서나 원하는대로 해당 문자열을 변경할 수 있습니다. 무의미한 호출이 필요하지 않고 신뢰할 수있는 결과를 산출하는 객체 감지userAgent잊어 버리고 대신 사용하여 실패의 날과 끝없는 절름발이 설명을 절약 할 수 있습니다. ( 브라우저 감지 에 대해 자세히 알아보십시오 .)regex

스니핑 이외의 브라우저 감지 방법을 사용하는 것이 좋습니다.

HTH

-------------------

하나의 정규 표현식으로 합리적으로 제한하고 있습니까? 합격 / 불합격 패턴을 결정하기 위해 정규 표현식 세트 를 만들 수 있습니까 ?

-------------------

브라우저 스니핑은 나쁜 평가를 받고 때로는 정당화됩니다. UA 스니핑을 사용하여 새 브라우저를 감지하는 것은 좋은 생각이 아닙니다. 그러나 IE5,6,7을 감지하려는 경우 문제가되지 않을 가능성이 매우 높습니다.

preg_match_all('/(MSIE\s?)(6|7)[\.0-9]{0,}/',$_SERVER['HTTP_USER_AGENT'], $matches);

나를 위해 작동



출처
https://stackoverflow.com/questions/7415005