Mobile user agent check I've been using the following user agent Regular Expression to detect mobile devices, but I recently came across a few resources that listed a whole host of mobile user agents that I had not heard of before.

Whilst my agent check is only the first step in the detection process - I also have some JavaScript as a fallback - I would like for it to contain the majority of currently undisputed mobile "keywords" so as to optimise the user experience for those handsets. I would also like to keep things as future-proof as possible, but this can only ever be argued with good reasoning and not set-in-stone.

The core of the regexp follows - please note the user agent string has had it's white-space removed. The check is also specifically case dependent.

Please ignore the newlines; they are for formatting only.

/i[Pp]hone|[Mm]obile[Ss]afari|[Ww]indowsCE|[Ww]indows[Pp]hone|
 IE[Mm]obile|[Oo]pera[Mm]ini|[Oo]pera[Mm]obi|[Bb]lack[Bb]erry|
 [^A-Z]RIM[^A-Z]|[Ss]ony[Ee]ricsson|[Nn]okia|[^A-Z]MIB[^A-Z]/


These are the extra edge-case agents that I've found out about:

/[Ss]kyfire|[Tt]ea[Ss]hark|[Nn]et[Ff]ront|[Mm]inimo|
 [Ii]ris|[Ff]ennec|[Dd]oris|[Ss]eries60|BOLT|[Bb]lazer/


Does anyone have any further suggestions, or possible keywords to remove, that could cause false positives?

For example, I do not include Samsung or Android for the precise reasons that they are not unique to mobile agents. I'd rather let agents through to the JavaScript that I'm unsure about.

As a second note, many user-agents report as Like Something - i.e. Like Mobile Safari - should I filter these out of the equation, or if something is reporting this; is it also likely to be a mobile device.
First of all I guess your first step of the detection process is processed server side because you said there is a fallback which is processed by JavaScript.
Therefore I guess you only perform a HTTP User-Agent check so far.
Suggestion BlackBerry
I would recommend to add also a check of the Accept request header to your first step of detection.
In one of my recent projects I ran into trouble cause the HTTP User-Agent detection of BlackBerry failed in some cases. For these casees I had to add an Accept request header check which looks for /vnd.rim/.
I didn't find out much about the background why it happens. I only know some BlackBerry browsers try to emulate IE or Firefox.
Example
Taken from the BlackBerry 8120 device specification document: application/vnd.rim.html
Suggestion J2ME Devices
Clients using this technology might be quite rare but to be sure you could include another RegEx for midp to cover all kind of MIDP devices.
Question
I know they're dead but I think there are still some around. What about Palm and webOS devices?