我有以下正则表达式,但失败了(带点的内部数字):
([0-9]{1,3}\.?[0-9]{1,3}\.?[0-9]{1,3})
我希望它涵盖以下情况:
123有效
123.4有效
123.44有效
123.445有效
123.33.3不好(正则表达式将其验证为真实)
123.3.3不好(正则表达式将其验证为true)
123.333.3有效
123.333.34有效
123.333.344有效
你能帮我么?
最佳答案
您有多种情况,我想使用|
或运算符:
^([0-9]{1,3}|[0-9]{1,3}\.[0-9]{1,3}|[0-9]{1,3}\.[0-9]{3}\.[0-9]{1,3})$
^ ^ ^ ^
您可以检查regex demo
细节
正则表达式匹配三种情况:
情况1
[0-9]{1,3}
这将匹配一个或多个数字
情况2
[0-9]{1,3}\.[0-9]{1,3}
这将匹配一个或多个数字,后跟一个点,然后是一个或多个数字
情况3
[0-9]{1,3}\.[0-9]{3}\.[0-9]{1,3}
这将匹配一个或多个数字,然后是一个点,然后是三个数字,然后是一个点,然后是一个或三个数字
请注意,您可以将
[0-9]
替换为\d
您的正则表达式可以是:^(\d{1,3}|\d{1,3}\.\d{1,3}|\d{1,3}\.\d{3}\.\d{1,3})$