需要一些帮助来改善正则表达式

时间:2012-10-16 21:25:20

标签: javascript regex

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

它有效,但这个正则表达式非常长,必须有一种方法可以缩短它。有人可以帮帮我吗?

由于

5 个答案:

答案 0 :(得分:3)

您可以将[0-9]{1}替换为\d,如下所示:

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

$与该行的结尾匹配。

修改:根据Rob-W的反馈进行更新

答案 1 :(得分:1)

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

var tag ="6dde3d91f23bff5ab81e91838f19f306b33fe7a8refs/tags/3.4.2";​​​​​
console.log(tag.split('/')[2]);​ // results in 3.4.2

答案 2 :(得分:0)

{1}隐含在每个语句中。拿出来会缩短你的表达。

j08691's answer是正确的事情:只是将它拆分。

答案 3 :(得分:0)

我的结果是\d\..*

不能比这短。

测试here

答案 4 :(得分:0)

这是最短的一个>>

<强> [0-9。] + $