我在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不应该匹配
答案 0 :(得分:1)
对于.net世界,以下内容应该有效:
ext(js)?\-(?<ver>\d[^/]+)(?:/)
命名组也会为您提供准确的版本号。
答案 1 :(得分:0)
如果你使用的正则表达式支持外观,那么这应该符合你的需求:
(?<=ext-|extjs-).+?(?=/)
虽然上面的正则表达式可能非常宽松,但下面的正则表达式更具体(与我从OP中猜到的可能格式相匹配):
(?<=ext-|extjs-)\d+([.]\d+){0,2}(-(beta|rc)-\d+)?