我有以下正则表达式,但失败了(带点的内部数字):

([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})$

10-05 20:40
查看更多