我缺乏正则表达式的经验,我需要一些帮助。我需要提取一个 git 标签。输入字符串如下所示:
6dde3d91f23bff5ab81e91838f19f306b33fe7a8refs/tags/3.4.2
// there is a new line at the end of the string
我需要的字符串部分是3.4.2
.这是我的代码:
var pattern = /.*([0-9]{1}.{1}[0-9]{1}.{1}[0-9]{1}).*/ig;
var match = pattern.exec(string);
// match[1] gets what I need
它有效,但是这个正则表达式长得离谱,必须有一种方法可以使其更短。有人可以帮助我吗?
谢谢
您可以将
[0-9]{1}
替换为d
,如下所示:
/d.d.d$/
$
与行尾匹配。
编辑:根据Rob-W的反馈进行了更新
不需要正则表达式,只需拆分字符串即可。
var tag ="6dde3d91f23bff5ab81e91838f19f306b33fe7a8refs/tags/3.4.2";
console.log(tag.split('/')[2]); // results in 3.4.2
{1}
隐含在每个语句中。把这些拿出来会缩短你的表情。
不过,J08691的答案是正确的:只需将其字符串拆分即可。
我得到了你的结果d..*
不能比这短。
在这里测试
这是最短的一个>>
[0-9.]+$