正则表达式比较整数并忽略分隔符

时间:2018-03-26 10:32:49

标签: regex

我想匹配以下模式

  

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

不幸的是,由于输入中的点,第二个语句不起作用。是否可以阅读完整的数字并忽略这些要点,还是有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

您可以使用

^1\.(?!(?:\.?0)+$)\d{6}\.\d{3}\.\d$

请参阅regex demo

如果在初始1.之后只有零和点,则正则表达式将失败。

<强>详情

  • ^1\. - 1.位于字符串的开头
  • (?!(?:\.?0)+$) - 一个负面的预测会使匹配失败,有一个或多个可选.的序列和一个零直到字符串的结尾
  • \d{6} - 6位数
  • \. - 一个点
  • \d{3} - 3位数
  • \. - 一个点
  • \d - 数字
  • $ - 字符串结束。