从网址中提取版本标识符

时间:2013-04-24 11:39:07

标签: javascript regex

我在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-'之后或'ext-'之后以及之前的'/'。但是URL可能指向其他资源,在这种情况下,RegExp不应该匹配

2 个答案:

答案 0 :(得分:1)

对于.net世界,以下内容应该有效:

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

命名组也会为您提供准确的版本号。

答案 1 :(得分:0)

如果你使用的正则表达式支持外观,那么这应该符合你的需求:

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

虽然上面的正则表达式可能非常宽松,但下面的正则表达式更具体(与我从OP中猜到的可能格式相匹配):

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