0

我希望有人已经完成了这项工作,但我想做的是输出各种 javascript 库的语义版本列表。假设我有以下输入:

我想对这些字符串中的每一个调用一个函数,并让它从路径中输出 semver:

  • 2.1.3
  • 3.3.4
  • 1140 或 2.0(首选)
  • 0.3.0
  • 2.1.0-X.10
  • 2.1.8-M1
  • 无效的

我无法找到任何现有的库,并希望有人能方便地使用 IE9ish。

4

1 回答 1

0

通过使用以下代码,我能够使它工作:

  it('should parse version from script source', () => {
    function getVersion(source:string) {
      if (!source) {
        return null;
      }

      var versionRegex = /(v?((\d+)\.(\d+)(\.(\d+))?)(?:-([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?(?:\+([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?)/;
      var matches = versionRegex.exec(source);
      if (matches && matches.length > 0) {
        return matches[0];
      }

      return null;
    }

    expect(getVersion('https://code.jquery.com/jquery-2.1.3.js')).toBe('2.1.3');
    expect(getVersion('//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css')).toBe('3.3.4');
    expect(getVersion('https://cdnjs.cloudflare.com/ajax/libs/1140/2.0/1140.css')).toBe('2.0');
    expect(getVersion('https://cdnjs.cloudflare.com/ajax/libs/Base64/0.3.0/base64.min.js')).toBe('0.3.0');
    expect(getVersion('https://cdnjs.cloudflare.com/ajax/libs/angular-google-maps/2.1.0-X.10/angular-google-maps.min.js')).toBe('2.1.0-X.10');
    expect(getVersion('https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/2.1.8-M1/swagger-ui.min.js')).toBe('2.1.8-M1');
    expect(getVersion('https://cdnjs.cloudflare.com/BLAH/BLAH.min.js')).toBe(null);
  });
于 2015-04-21T03:43:15.397 回答