首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果字符串包含"MSIE“但不包含"Opera”,则使用正则表达式进行匹配

如果字符串包含"MSIE“但不包含"Opera”,则使用正则表达式进行匹配
EN

Stack Overflow用户
提问于 2011-12-22 23:39:36
回答 1查看 921关注 0票数 1

我的最终目标是使用正则表达式来匹配IE7和更低版本加上Opera9.0和更低版本的HTTP_USER_AGENT字符串。

这是因为这些浏览器不支持CSS“框大小调整”。

我不是一个真正的正则表达式语法专家。

但是我看了一下我在谷歌上找到的OperaIE的"http用户代理“列表

代码语言:javascript
复制
(MSIE [2-7]\.+)|(rv:1\.8\.1\.1+)|(Opera/[4-8]\.+)|(Opera [4-8]\.+)|(Opera\/9\.00+)

这是我用来匹配上述列表中所有HTTP_USER_AGENTS的正则表达式。(我不确定该列表是否包含所有可能的用户代理。可能不会)

但不管怎样,这个正则表达式与它们都匹配。但它也能与Opera的一些新版本相匹配

例如。

代码语言:javascript
复制
Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; de) Opera 10.10
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; tr) Opera 10.10
Mozilla/4.0 (compatible; MSIE 6.0; Linux i686 ; en) Opera 9.70
Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux x86_64; en) Opera 9.60
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.52

所以我离你只差一步了。区分的因素是所有OPERA版本9以及包含“MSIE6”的版本。结尾还包含了"Opera“。

所以我需要修改我的正则表达式来匹配所有的“MSIE6”。不包含"OPERA“的字符串

正如我已经说过的,我目前拥有的regex可能不是最好的。但是,嘿,我是regex的新手!

谢谢

亚历克斯

EN

回答 1

Stack Overflow用户

发布于 2011-12-23 00:11:40

您可以使用否定的先行查找来不匹配后跟Opera的MSIE值,例如:

代码语言:javascript
复制
MSIE [2-7]\.\d+(?!.*Opera)|Opera[ /](?:[4-8]\.\d+|9\.00)|Opera$
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8606157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档