12

我想要一个只接受数字和点的 java 正则表达式。

例如,

             1.1.1 ----valid
             1.1   ----valid
             1.1.1.1---valid
             1.    ----not valid

点不应位于起始位置或结束位置。

4

5 回答 5

48

我想这就是你想要的:

^\d+(\.\d+)*$

说明:它接受以点分隔的数字;它以数字开头和结尾;一个数字可以有多个数字;一个不带点的数字也被接受。

没有多个数字的变体:

^\d(\.\d)*$

至少需要一个点的变体:

^\d+(\.\d+)+$
^\d(\.\d)+$

不要忘记在 Java 中您必须转义 \ 符号,因此代码将如下所示:

Pattern NUMBERS_WITH_DOTS = Pattern.compile("^\\d+(\\.\\d+)*$");
于 2012-08-17T07:14:00.677 回答
3

所以你想要一个需要数字和句点但以数字开头和结尾的正则表达式?

"[0-9][0-9.]*[0-9]"

但这与1. 它没有任何句点,但确实以数字开头和结尾。

于 2012-08-17T07:05:36.253 回答
2

I guess this is what you want:

Pattern.compile("(([0-9](\\.[0-9]*))?){1,13}(\\.[0-9]*)?(\\.[0-9]*)?(\\.[0-9]*)?", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.DOTALL | Pattern.MULTILINE);

Explanation: It accepts numbers separated by dots; it starts and ends with number; a number can have multiple digits; one number without dots is not accepted.

The output like this--

  • 1.1
  • 1.12
  • 1.1.5
  • 1.15.1.4
于 2016-06-27T07:11:23.600 回答
1
<!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>
于 2015-10-10T16:42:56.690 回答
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`) 
于 2012-08-17T07:15:22.890 回答