数字とドットのみを受け入れるJava正規表現が必要です。
例えば、
1.1.1 ----valid
1.1 ----valid
1.1.1.1---valid
1. ----not valid
ドットは開始位置または終了位置に配置しないでください。
私はこれがあなたが望むものだと思います:
^\d+(\.\d+)*$
説明:ドットで区切られた数字を受け入れます。数字で始まり、数字で終わります。数値は複数の数字を持つことができます。ドットのない1つの数字も受け入れられます。
複数桁のないバリアント:
^\d(\.\d)*$
少なくとも1つのドットが必要なバリアント:
^\d+(\.\d+)+$
^\d(\.\d)+$
Javaでは\記号をエスケープする必要があることを忘れないでください。そのため、コードは次のようになります。
Pattern NUMBERS_WITH_DOTS = Pattern.compile("^\\d+(\\.\\d+)*$");
では、数字とピリオドが必要だが、数字で始まり数字で終わる正規表現が必要ですか?
"[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);
説明:ドットで区切られた数字を受け入れます。数字で始まり、数字で終わります。数値は複数の数字を持つことができます。ドットのない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>
"^\\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`)