Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式匹配字符串,如果字符串包含;MSIE“;但如果它们包含;歌剧;_Regex_User Agent - Fatal编程技术网

Regex 使用正则表达式匹配字符串,如果字符串包含;MSIE“;但如果它们包含;歌剧;

Regex 使用正则表达式匹配字符串,如果字符串包含;MSIE“;但如果它们包含;歌剧;,regex,user-agent,Regex,User Agent,我的最终目标是使用正则表达式匹配IE7及更低版本加上Opera9.0及更低版本的HTTP_用户_代理字符串 这是因为这些浏览器不支持CSS“框大小” 我不是一个真正的正则表达式语法专家 但是我浏览了我在google上找到的“http用户代理”列表 这是我用来匹配上述列表中所有HTTP_用户_代理的正则表达式。(我不确定列表是否包含所有可能的用户代理。可能不是) 但无论如何,正则表达式与它们都匹配。但它与一些较新版本的歌剧也很相配 例如 所以我只差一步。区别因素是所有OPERA版本9+都包含“MS

我的最终目标是使用正则表达式匹配IE7及更低版本加上Opera9.0及更低版本的HTTP_用户_代理字符串

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

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

但是我浏览了我在google上找到的“http用户代理”列表

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

但无论如何,正则表达式与它们都匹配。但它与一些较新版本的歌剧也很相配

例如

所以我只差一步。区别因素是所有OPERA版本9+都包含“MSIE 6”。最后也包含“OPERA”

因此,我需要修改正则表达式以匹配所有不包含“OPERA”的“MSIE 6.”字符串

正如我所说,我目前使用的正则表达式可能不是最好的。但是嘿,我对regex还不熟悉

谢谢


Alex

您可以使用负前瞻来与MSIE值不匹配,MSIE值后跟
Opera
,例如:

MSIE [2-7]\.\d+(?!.*Opera)|Opera[ /](?:[4-8]\.\d+|9\.00)|Opera$

您可以使用负前瞻与MSIE值不匹配,MSIE值后跟
Opera
,例如:

MSIE [2-7]\.\d+(?!.*Opera)|Opera[ /](?:[4-8]\.\d+|9\.00)|Opera$

在这种情况下,我通常的建议是做两次检查,因为大多数情况下,将所有检查压缩到一个正则表达式中并不是很重要。在这种情况下,我通常的建议是做两次检查,因为大多数情况下,将所有检查压缩到一个正则表达式中并不是很重要。
MSIE [2-7]\.\d+(?!.*Opera)|Opera[ /](?:[4-8]\.\d+|9\.00)|Opera$