:cry: 谢谢!
[code="java"]
public static void main(String[] args) throws Exception {
Pattern p = Pattern.compile("([2-9]+(\.\d+)?)|(1\d+(\.\d+)?)|(1\.\d*[1-9]+)");
String[] a = { "1.0000000000000001", "12.001", "1.0000", "0.111" };
for (String n : a) {
System.out.println(p.matcher(n).matches());
}
}
[/code]
^([^01]|\d{2,})$
[code="java"]\d*
\d * 表示由0到n个数字组成
<?
$line="123456";
preg_match_all("/\d*/s",$line,$match);
print_r($match);
?>[/code]
/^1-9(.){0,1}[\d]*](\d)$/
分情况讨论就可以了,用或组合一下,就是结果。
1、只有一位数字:[2-9]
2、两位以上的数字:[1-9][0-9]+
如需考虑小数点,就进一步细化可能的情况。所有情况的合集就是你需要的正则表达式。
这样做性能可能不佳,结合实际考虑吧。