我想匹配以下模式
1.XXXXXX.XXX.X
组合必须以1开头,并且必须至少包含大于0的第二个数字。只允许数字和点数。
以下示例是正确的
1.000000.000.1
1.000500.000.0
1.020030.030.0
以下示例不正确
1.000000.000.0
1.0000.00.0
1.0000d0.020.0
到目前为止我创造了什么
(?=^[1][\.][0-9]{6}[\.][0-9]{3}[\.][0-9]{1}$) // check pattern 1.XXXXXX.XXX.X
(?=^[1-9](?!0000000000$)[0-9][1-9]?\d+$) // check if input is greater than 10000000000
不幸的是,由于输入中的点,第二个语句不起作用。是否可以阅读完整的数字并忽略这些要点,还是有更好的解决方案?
答案 0 :(得分:1)
您可以使用
^1\.(?!(?:\.?0)+$)\d{6}\.\d{3}\.\d$
请参阅regex demo
如果在初始1.
之后只有零和点,则正则表达式将失败。
<强>详情
^1\.
- 1.
位于字符串的开头(?!(?:\.?0)+$)
- 一个负面的预测会使匹配失败,有一个或多个可选.
的序列和一个零直到字符串的结尾\d{6}
- 6位数\.
- 一个点\d{3}
- 3位数\.
- 一个点\d
- 数字$
- 字符串结束。