我想要一个只接受数字和点的java正则表达式。
例如,
1.1.1 ----valid
1.1 ----valid
1.1.1.1---valid
1. ----not valid
点不应位于起始位置或结束位置。
答案 0 :(得分:22)
我想这就是你想要的:
^\d+(\.\d+)*$
说明:它接受以点分隔的数字;它以数字开头和结尾;一个数字可以有多个数字;一个没有圆点的数字也被接受。
没有多位数的变体:
^\d(\.\d)*$
需要至少一个点的变体:
^\d+(\.\d+)+$
^\d(\.\d)+$
不要忘记在Java中你必须转义\符号,所以代码将如下所示:
Pattern NUMBERS_WITH_DOTS = Pattern.compile("^\\d+(\\.\\d+)*$");
答案 1 :(得分:3)
所以你想要一个想要数字和句号但正以数字开头和结尾的正则表达式?
"[0-9][0-9.]*[0-9]"
但这与1
之类的东西不匹配。它没有任何句号,但以数字开头和结尾。
答案 2 :(得分:0)
"^\\d(\\.\\d)*$"
1 ----valid (if it must be not valid, replace `*` => `+` )
1.1.1 ----valid
1.1 ----valid
1.1.1.1---valid
1. ----not valid
11.1.1 ---not valid (if it must be valid, add `+` after each `d`)
答案 3 :(得分:0)
<!DOCTYPE html>
<html>
<body>
<p>RegEx to allow digits and dot</p>
Number: <input type="text" id="fname" onkeyup="myFunction()">
<script>
function myFunction() {
var x = document.getElementById("fname");
x.value = x.value.replace(/[^0-9\.]/g,"");
}
</script>
</body>
</html>
答案 4 :(得分:0)
我想这就是你想要的:
Pattern.compile("(([0-9](\\.[0-9]*))?){1,13}(\\.[0-9]*)?(\\.[0-9]*)?(\\.[0-9]*)?", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.DOTALL | Pattern.MULTILINE);
说明:它接受以点分隔的数字;它以数字开头和结尾;一个数字可以有多个数字;不接受一个没有圆点的数字。
像这样的输出 -