我很难使用正则表达式。我已经使用regex101.com进行了大量测试,但无法解决此问题。
我有这个字符串:setVersion('2.0.2.4999');
我希望能够替换版本号,该版本号总是由4个点分隔的数字组成,但每个数字可能超过1位。
我更愿意在(最好)1行中解决这个问题,因为我需要在gulp任务中插入它。
我试过这个:
/setVersion\('([0-9].[0-9].[0-9].[0-9])/
但只有当每个数字只有1位数时才会起作用,这不是我的情况。
如何使其工作以便多次搜索数字?
答案 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)
答案 2 :(得分:1)
使用“+”量词,它将匹配1和无限数字。此外,你必须逃避“。”,否则它将匹配任何角色。
试试这个:
setVersion\('([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)