Home  >  Q&A  >  body text

javascript - /Win(?:dows )?[^do]{2}\s?\d+\.\d+/ 可以检测到"Win 9x 4.90"吗

  1. javascript检测windows操作系统时 /Win(?:dows )?[^do]{2}s?d+.d+/ 可以检测到"Win 9x 4.90"吗,javascript高级程序设计书中说是可以匹配到

  2. [^do]只是排除了带有"d","o"的标识符,为什么要这样,不是应该两个非空字符都可以的吗

在看javascript高级程序设计的【客户端检测】一章中碰到的问题,
新手学习,请指教,不胜感谢

阿神阿神2652 days ago295

reply all(4)I'll reply

  • ringa_lee

    ringa_lee2017-04-11 12:34:19

    我正在看这本书,刚看到这块儿,应该是写错了,写成\S{2}或[^\s]{2}应该就对了。

    reply
    0
  • 怪我咯

    怪我咯2017-04-11 12:34:19

    应该是检测不到的吧。。

    字符串 Win 后面有个空格。。正则那里没有这个空格。。。我觉得在 [^do] 前面加上个空格应该就能通过了

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-11 12:34:19

    /Win(?:dows)?\s?[^do]{2}\s?\d+.\d+/
    

    这个试了一下可以通过

    reply
    0
  • 阿神

    阿神2017-04-11 12:34:19

    我也刚看到这里,刚刚想通了第一个问题
    书上P237说的是第一组匹配到95、98、9x、NT、ME或XP,而不是9x 4.90,按此说法/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/
    书中的这行代码是可以匹配Win 9x的,而且下面的检测代码中在检测到RegExp["$1"]=="9x"之后并没有继续检测["$2"],即后面的 4.90字符串已经可以确定了

    第二个问题正在思考中

    reply
    0
  • Cancelreply