My regex is not very good; how can I split out these strings to determine what's between Trident/ and the following semicolon so I can tell which version I'm dealing with?
You want to use a capture group and get the second element of the array, which will give you the captured portion.
var stringAfterTrident = navigator.userAgent.match(/Trident([^;]+);/)[1];
//should return ["Trident/5.0;", "/5.0"] and you want the second item of the array
/Trident([^;]+);/
basically says starts with Trident, capture one or more character that is not the semicolon until there is a semicolon.