匹配版本号部分与正则表达式
我正在尝试将版本号(Major.Minor.Build.Revision)的各个部分与C#正则表达式进行匹配。 但是,我对写Regex很陌生,甚至使用Expresso也certificate有点困难。 现在,我有这个:
(?\d*)\.(?\d*)\.(?\d*)\.(?\d*)
这有效,但要求版本号的每个部分都存在。 我想做的还是匹配版本,如:
2.13
在这种情况下,构建和修订组需要返回空值。 如果我发现这一切都错了,请随意提出一个更好的方法。
(?\d*)\.(?\d*)(\.(?\d*)(\.(?\d*))?)?
使第三和第四部分可选。
我知道这不是正则表达式,但System.Version会为您完成所有工作。
如果您不想使用Regex,可以尝试:
System.Diagnostics.FileVersionInfo fvi = System.Diagnostics.FileVersionInfo.GetVersionInfo(); int major = fvi.FileMajorPart; int minor = fvi.FileMinorPart; int build = fvi.FileBuildPart;
在VBScript中测试过,这种模式:
^(\d+)(\.\d+)?(\.\d+)?(\.\d+)?$
将validation以下所有True:
- 23
- 23.1
- 23.1.1
- 23.1.1.1
以下都是假的:
- 23.11.11.33.11
- 23.43 2.1
- 44.11.2 3
- 3q.4.2.1
- 3.4。
- 4.3.21a
以上答案不能正常工作
(?\d*)\.(?\d*)(\.(?\d*)(\.(?\d*))?)?
试试这个,
var regularExpression = @"^(\d+\.)?(\d+\.)?(\d+\.)?(\*|\d+)$"; var regex = Regex.IsMatch("1.0.0.0", regularExpression, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); Console.WriteLine(regex);
尝试这样的事情:
(?
我只是将一些“零或一个”量词添加到捕获组中,也添加到点中以防它们不在那里。