已知字符串+混合varchar +已知字符串的正则表达式

时间:2016-04-07 11:36:56

标签: javascript regex

我很难使用正则表达式。我已经使用regex101.com进行了大量测试,但无法解决此问题。

我有这个字符串:setVersion('2.0.2.4999');

我希望能够替换版本号,该版本号总是由4个点分隔的数字组成,但每个数字可能超过1位。

我更愿意在(最好)1行中解决这个问题,因为我需要在gulp任务中插入它。

我试过这个:

/setVersion\('([0-9].[0-9].[0-9].[0-9])/

但只有当每个数字只有1位数时才会起作用,这不是我的情况。

如何使其工作以便多次搜索数字?

3 个答案:

答案 0 :(得分:2)

这应该有效

\d+\.\d+\.\d+\.\d+

您可以将\d替换为[0-9]。点(.)表示regex中的任何字符,因此它们会被转义。

更精确的答案将是

\d+(?:\.\d+){3}

正则表达式细分

\d+ #Match one or more digits
(?: #Non-capturing group
  \. #Match . literally
  \d+ #Match one or more digits
)
{3} #Repeat whatever was previously in () three times

你的最终正则表达式看起来像是

setVersion\('(\d+(?:\.\d+){3})'\)

setVersion\('(\d+\.\d+\.\d+\.\d+)'\)

答案 1 :(得分:2)

要匹配上述一个或多个字符,您可以使用+量词。请注意,RegEx缺少需要转义的结尾')

/setVersion\('([0-9]+(?:\.[0-9]+){3})'\)/

Live Demo

答案 2 :(得分:1)

使用“+”量词,它将匹配1和无限数字。此外,你必须逃避“。”,否则它将匹配任何角色。

试试这个:

  

setVersion\('([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)

Regex Demo