Java 正则表达式内部数字检查
我有以下正则表达式,但它失败了(带点的内部数字): 我希望它涵盖以下情况:Java 正则表达式内部数字检查,java,regex,string,pattern-matching,regular-language,Java,Regex,String,Pattern Matching,Regular Language,我有以下正则表达式,但它失败了(带点的内部数字): 我希望它涵盖以下情况: 123有效 123.4有效期 123.44有效 123.445有效期 123.33.3不正常(正则表达式验证为真) 123.3.3不正常(正则表达式将其验证为真) 123.333.3有效期 123.333.34有效期 123.333.344有效期 你能帮帮我吗 如果您有多个case,我将使用以下or运算符: ^([0-9]{1,3}|[0-9]{1,3}\.[0-9]{1,3}|[0-9]{1,3}\.[0-9]{3
- 123有效
- 123.4有效期
- 123.44有效
- 123.445有效期
- 123.33.3不正常(正则表达式验证为真)
- 123.3.3不正常(正则表达式将其验证为真)
- 123.333.3有效期
- 123.333.34有效期
- 123.333.344有效期
你能帮帮我吗 如果您有多个case,我将使用以下or运算符:
^([0-9]{1,3}|[0-9]{1,3}\.[0-9]{1,3}|[0-9]{1,3}\.[0-9]{3}\.[0-9]{1,3})$
^ ^ ^ ^
你可以查一下
细节 正则表达式匹配三种情况: 案例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})$
这个怎么样(演示在)。这是一个非常简单明了的正则表达式:
(^\d{3}\.\d{3}\.\d{1,3}$)|(^\d{3}\.\d{1,3}$)|(^\d{3}$)
这将识别三个有效的独立组
作为一个组,必须有3个数字、一个点、3个以上数字、一个点和1-3个数字(^\d{3}\.\d{3}\.\d{1,3}$)
作为一个组,必须有3个数字、一个点和1-3个数字(^\d{3}\.\d{1,3}$)
作为一个必须有1-3位数字的组(^\d{3}$)
|
)语句拆分
然而,既然您已经标记了,为什么不让Java承担一些责任,在不强大的地方帮助Regex呢?我希望匹配格式
((?:\d{1,3}\.?)+)
,并以编程方式检查数字计数是否有效。使用以下表达式与匹配:
s.matches("\\d{1,3}(?:\\.\\d{3})?(?:\\.\\d{1,3})?")
见
详细信息
^
-隐式,不需要,因为模式用于需要完整字符串匹配的匹配中
\d{1,3}
-1到3位数字
(?:\。\d{3})?
-可选的
和3位数字
(?:\。\d{1,3})
-可选的
和1到3位数字序列
$
-隐式,不需要,因为模式用于需要完整字符串匹配的.matches
中
为什么123.33.3
和123.3.3
不正常?好吧,如果一个三位数字符串中的第二个数字应该有三位数,试试我发布的。那么,它有效吗?是的,你所有的Anwser都有效!非常感谢。这正是我需要的!非常感谢您的详细解释。哇,你对正则表达式很在行!我真的很坏,是个傻瓜。。。。再次感谢你!这也是我需要的!感谢您的大力帮助和演示。我在java代码中使用这个正则表达式,我想我只是编写了一个“简单”(xaxaxa)正则表达式。我通常使用其他方法(子字符串等)。。。主要是因为我不喜欢正则表达式。。。
s.matches("\\d{1,3}(?:\\.\\d{3})?(?:\\.\\d{1,3})?")