我们需要创建一个正则表达式来检查表示应用程序版本的字符串。该字符串的格式为 XYZ,其中 X、Y、Z 可以是任何整数,也可以是 *(X 除外)。* 字符之后,不应超过该行。数字不能以 0 开头。有效字符串示例:
- 12.2323.2
- 0.0.3
- 0.0.0
- 34.0.3
- 23.2.*
- 四个。*
无效字符串示例:
- 34a.34.1
- *
- 34.*.3
- 57.*。
- d3.43.3
- 0004.*
- 1.02.*
我无法经常这样做。
这不是一项学习任务。
我们需要创建一个正则表达式来检查表示应用程序版本的字符串。该字符串的格式为 XYZ,其中 X、Y、Z 可以是任何整数,也可以是 *(X 除外)。* 字符之后,不应超过该行。数字不能以 0 开头。有效字符串示例:
无效字符串示例:
我无法经常这样做。
这不是一项学习任务。
天真的实现你想要的:
我收到了这样的结论。首先,让我们创建一个正则表达式来检查字符串与模式
A.B.C,这很简单:这里
\d+- 任何数字序列,\.- 点(必须转义,是的),^- 行的开头,(\r)?$- 行的结尾,考虑到两者\r\n并且简单\n此外,可以有一个星号,而不是最后一个数字块,我们将其替换
\d+为(\*|\d+)(星号也必须转义):此外,星号可以代替最后两个块,与前一个类似,更改
\d+\.(\*|\d+)为(\*|\d+\.(\*|\d+)):好吧,仍然要排除带有前导零的数字,即 它是单个零
0或非零 + 任意位数[1-9]\d*。\d+我们用设计替换所有三个块(0|[1-9]\d*),我们得到最终版本。几个解释:
前导零被此表达式截断
0|[1-9]\d*。那些。我们允许一个零或数字 1-9,后跟任意数量的任意数字。*我们控制\*|((0|[1-9]\d*)\.(\*|(0|[1-9]\d*)))星号或其他所有内容。测试 regex101 https://regex101.com/r/41aBtQ/1