我需要一个能够接受数字和点号的Java正则表达式。
例如:
1.1.1 ----valid
1.1 ----valid
1.1.1.1---valid
1. ----not valid
这些点不应该出现在起始位置或者结束位置。
我想这就是你想要的:
^\d+(\.\d+)*$
解释:它接受由点分隔的数字;以数字开头和结尾;一个数字可以有多个数字位;也接受没有点的单个数字。
不含多个数字位的变体:
^\d(\.\d)*$
至少需要一个点的变体:
^\d+(\.\d+)+$
^\d(\.\d)+$
别忘了在Java中你需要转义\符号,所以代码应该像这样写:
Pattern NUMBERS_WITH_DOTS = Pattern.compile("^\\d+(\\.\\d+)*$");
1.
的内容。有人能帮忙吗? - conor909您想要一个正则表达式,该表达式要求包含数字和句点,但以数字开头和结尾?
"[0-9][0-9.]*[0-9]"
但是这不能匹配像1
这样的内容。它没有任何句点,但是以数字开头和结尾。
我猜这就是你想要的:
Pattern.compile("(([0-9](\\.[0-9]*))?){1,13}(\\.[0-9]*)?(\\.[0-9]*)?(\\.[0-9]*)?", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.DOTALL | Pattern.MULTILINE);
说明:它接受由点分隔的数字;它以数字开头和结尾;一个数字可以有多个数字位;不接受没有点的数字。
输出结果如下--
<!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>
"^\\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`)
".1"
,"1..1"
,"1.11"
这些怎么样?你已经尝试过了吗?如果有的话,能否将其发布并解释一下出了什么问题? - Bart Kiers