2012-08-17 21 views
5

Ich möchte einen Java-Regex-Ausdruck, der nur die Zahlen und Punkte akzeptiert.Regex zur Validierung nur Zahlen und Punkte

zum Beispiel

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

Die Punkte nicht an der Startposition oder in der Endposition sein sollten.

+2

Was ist '“ .1 "', '" 1 ..1 "', '" 1.11 "'? Hast du schon etwas probiert? Wenn ja, könntest du das auch posten und erklären, was schief gelaufen ist? –

+0

wäre eine einzelne Ziffer gültig! – Anirudha

+0

Was ist mit Zahlen ohne Punkte? Mit anderen Worten, ist der Punkt optional oder erforderlich? – tripleee

Antwort

17

Ich denke, das ist, was Sie wollen:

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

Erläuterung: Es akzeptiert Zahlen, die durch Punkte voneinander getrennt sind; es beginnt und endet mit der Nummer; eine Nummer kann mehrere Ziffern haben; eine Zahl ohne Punkte wird ebenfalls akzeptiert.

Variante ohne mehrere Ziffern:

^\d(\.\d)*$ 

Varianten, wo zumindest ein Punkt benötigt wird:

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

Vergessen Sie nicht, dass in Java müssen Sie die \ Symbole entkommen, so dass der Code wie folgt aussehen wird:

Pattern NUMBERS_WITH_DOTS = Pattern.compile("^\\d+(\\.\\d+)*$"); 
1

Sie wollen also eine Regex, die Zahlen und Punkte will aber beginnt und endet mit einer Zahl?

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

Aber das wird Dinge wie 1 nicht übereinstimmen. Das hat keine Perioden, aber beginnt und endet mit einer Zahl.

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`) 
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> 
0

Ich denke, das ist, was Sie wollen:

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

Erläuterung: Es akzeptiert Zahlen, die durch Punkte voneinander getrennt sind; es beginnt und endet mit der Nummer; eine Nummer kann mehrere Ziffern haben; Eine Zahl ohne Punkte wird nicht akzeptiert.

Der Ausgang wie this--

  • 1,1
  • 1,12
  • 1.1.5
  • 1.15.1.4