2013-04-24 83 views
1

我有如下因素的URL在JavaScript:版本标识符

bryntum.com/examples-1.2.3/advanced/advanced.html 
bryntum.com/doc/1.2.3/foo/bar.html 
cdn.sencha.io/ext-3.4.0/ext-all-debug.js 
cdn.sencha.io/ext-3.4.0-beta-1/ext-all.js 
cdn.sencha.io/extjs-4.1.0-rc-1/ext-all-debug.js 
bryntum.com/examplesfor/extjs-4.1.1/foo/bar.html 
bryntum.com/library/extjs-4.1.2/ext-all-debug.js 
bryntum.com/library/extjs-10.11.21/ext-all-debug.js 
bryntum.com/library/extjs-4.1.2/ext-all-this-is-not-ext.js 

我需要提取的ExtJS/EXT vesion号码与正则表达式:后“extjs-”或之后“外部 - ”和最多下一个 '/'。但潜在的URL可以指向一些其他资源,在这种情况下,正则表达式不应该匹配

+0

你应该提到你使用的平台。正则表达式在不同的平台上有细微的差异。 – dotNET 2013-04-24 11:44:09

回答

1

对于.NET世界,下面应该工作:

ext(js)?\-(?<ver>\d[^/]+)(?:/) 

命名组会给你确切的版本号太。

0

如果您使用支持lookarounds正则表达式的味道,这应该满足您的需求:

(?<=ext-|extjs-).+?(?=/) 

虽然上述正则表达式可能是到多少章法,下面一个更具体的(可能的匹配格式我猜你的OP):

(?<=ext-|extjs-)\d+([.]\d+){0,2}(-(beta|rc)-\d+)?