代码之家  ›  专栏  ›  技术社区  ›  Jonathon Oates

将正则表达式改为从useragent字符串返回2个值而不是3个值

  •  0
  • Jonathon Oates  · 技术社区  · 15 年前

    我从jquery中提取了一个正则表达式来检测浏览器的引擎是否是WebKit并获取它的版本号,它返回从 userAgent 字符串:webkit/,webkit和。[是版本号。

    我希望正则表达式只返回2个值:webkit和..

    我不懂正则表达式,所以请你用你的答案来解释这个表达式。

    我目前正在使用并希望改进的正则表达式是: /(webkit)[\/]([\w.]+)/ .

    Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 此正则表达式将返回: webkit/525.13,webkit,525.13 . 我只希望它能回来 webkit,525.13

    感谢您的帮助,提前谢谢!

    2 回复  |  直到 15 年前
        1
  •  1
  •   nickf    15 年前

    在正则表达式中,返回的值是括号中的值:

    /([a-z]+)-#(\d+)/.exec("abc-#123")
    
    // ["abc-#123", "abc", "123"]
    

    您可以通过添加 ?: 开始时:

    /(?:[a-z]+)-#(\d+)/.exec("abc-#123")
    
    // ["abc-#123", "123"]
    

    重新阅读问题后编辑。

    regex的返回将包含(如我上面的示例所示)整个匹配的字符串,然后是匹配的组。如果只需要匹配的组,只需切掉第一个值:

    myRegex.exec(userAgent).slice(1);
    
    // ["webkit", "525.13"]   <-- note that this is an array
    
        2
  •  0
  •   Cesar    15 年前

    hem,如果您使用jquery,那么这个建议有一个内置方法,它会给您提供已经讨论过的结果。 http://api.jquery.com/jQuery.browser/