1

我缺乏正则表达式的经验,我需要一些帮助。我需要提取一个 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

它可以工作,但是这个正则表达式太长了,必须有办法让它更短。有人可以帮助我吗?

谢谢

4

5 回答 5

3

您可以按如下方式[0-9]{1}替换:\d

/\d\.\d\.\d$/

匹配行$尾。

编辑:根据Rob-W的反馈更新

于 2012-10-16T21:27:33.580 回答
1

不需要正则表达式,只需拆分字符串。

var tag ="6dde3d91f23bff5ab81e91838f19f306b33fe7a8refs/tags/3.4.2";​​​​​
console.log(tag.split('/')[2]);​ // results in 3.4.2
于 2012-10-16T21:27:22.123 回答
0

{1}是隐含在每个语句中的。把它们拿出来会缩短你的表情。

不过, j08691 的答案是正确的:只需字符串拆分即可。

于 2012-10-16T21:28:43.520 回答
0

我得到了你的结果\d\..*

不能比这更短。

在这里测试

于 2012-10-16T21:33:18.927 回答
0

这是最短的>>

[0-9.]+$

于 2012-10-17T05:28:57.160 回答