2013-10-18 31 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