我需要一些代碼來匹配所有不是SP1的IE6版本(Windows XP SP2的一部分,令人困惑的是eh)。這是爲了將IE瀏覽器的版本轉換爲無法正確處理的版本。用於匹配用戶代理字符串中的非SP1 IE6的最佳正則表達式模式?
我想出的最好的是:
MSIE [1-6]\.(?!.*?SV1)
有沒有人有一個更好的模式?上面的正則表達式基本上是做一個前瞻來確保SV1(表示SP1)不存在。
出於測試目的,這應該不匹配:
Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325)
但這應該:
Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0)
爲什麼不先過濾包含SV1的SV1,然後再處理其餘的? – 2009-05-09 09:12:46
我同意。正則表達式最適合尋找*匹配*,而不是尋找*不匹配*。只要尋找「SV1」,並排除那些匹配。 – Tomalak 2009-05-09 09:40:00
作爲插入程序的一部分,必須一次完成比賽。這是一場比賽(只有負面的預測)。 – 2009-05-09 09:45:04