例如,我想检查一下,当我分割我的字符串时,第一部分只包含数字和小数点。
我做了以下
String[] s1 = {"0.12.13.14-00000001-00000", "0.12.13.14-00000002-00000"};
String[] parts_s1 = s1.split("-");
System.out.println(parts_s1[0]);
if(parts_s1[0].matches("[0-9]")
但那只是检查数字而不是小数。我怎样才能检查这个小数?例如,我想检查0.12.13.14是否有效,0.12.13.14x之类的东西不起作用。
答案 0 :(得分:16)
在正则表达式中添加点字符,如下所示:
if(parts_s1[0].matches("[0-9.]*")) { // match a string containing digits or dots
*
允许多位数/小数点。
如果需要至少一个数字/小数点,请将*
替换为+
一次或多次。
修改强>
如果正则表达式需要匹配(正)十进制数(不仅仅是数字和小数点的任意序列),更好的模式将是:
if(parts_s1[0].matches("\\d*\\.?\\d+")) { // match a decimal number
请注意,\\d
相当于[0-9]
。
答案 1 :(得分:8)
您只需在允许的字符列表中添加一个点:
if(parts_s1[0].matches("[.0-9]+")
然而,这将匹配完全由点组成的字符串,或具有多个点的序列。
答案 2 :(得分:7)
您可以使用此正则表达式:
\\d+(\\.\\d+)*
<强>代码:强>
if(parts_s1[0].matches("\\d+(\\.\\d+)*") {...}