2013-10-18 32 views
0

我正在处理一个小脚本,它避免了IEMobile,但检测到MSIE版本,在这种情况下,IE9。我试图在RegExp中使用负向预览功能来执行此操作,但它不起作用,我想知道是否正确使用了负向预览功能?任何意见赞赏。RegExp负面向前排除字符串

/^(MSIE 9.0(?!IEMobile))*$/i 

IE移动的UA字符串:

Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917) 
+1

强制性免责声明:不做检测浏览器,做特征检测! – Halcyon

+0

这不是针对你的具体情况,而是针对某人可能会发现这个问题,并认为这是一个好主意,做浏览器检测。 – Halcyon

+0

你不是很清楚你想要什么,是你接受与否的示例用户代理吗? –

回答

2

首先你不需要锚定的正则表达式(所以没有^$符号在开始和结束)。

其次,您的正则表达式在MSIE 9.0之后寻找IEMobile,在您的实际示例中,它们之间的距离较远。

第三,.表示任何字符。如果你想要9.0版本,你应该在你的正则表达式中使用9\.0

正确的正则表达式应该是:

/MSIE 9\.0(?!.*IEMobile)/i // matches IE9, but not IEMobile 
+0

真棒,完美的作品。 TYVM – Halcyon991