[regex] IE 버전을 확인하는 정규식
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