RegEx否定前瞻以排除字符串

时间:2013-10-18 12:17:42

标签: javascript regex

我正在开发一个避免IEMobile的小脚本,但检测到MSIE版本,在本例中为IE9。我试图在RegExp中使用负向前瞻来做到这一点,但它不起作用,我想知道我是否正确使用负向前瞻?任何建议表示赞赏。

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

IE Mobile的UA字符串:

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

1 个答案:

答案 0 :(得分:2)

首先,您不需要锚定正则表达式(因此在开头和结尾都没有^ $个符号。)

其次,你的正则表达式在IEMobile之后找到MSIE 9.0,在你的实际例子中它们相距甚远。

第三,.表示任何角色。如果您需要9.0版,则应在正则表达式中使用9\.0

正确的正则表达式应为:

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