2012-08-17 137 views
5

Quiero una expresión java regex que solo acepta números y puntos.Regex para validar solo números y puntos

por ejemplo,

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

Los puntos no deben estar en la posición de partida o en la posición final.

+2

'¿Qué hay de" 0,1 "', '" 1 ..1 "', '" 1.11 "'? ¿Ya has probado algo? Si es así, ¿podrías publicar eso también y explicar qué salió mal? –

+0

¡Sería válido un solo dígito! – Anirudha

+0

¿Qué pasa con los números sin puntos? En otras palabras, ¿el punto es opcional o requerido? – tripleee

Respuesta

17

supongo que esto es lo que quiere:

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

Explicación: Se acepta números separados por puntos; comienza y termina con el número; un número puede tener múltiples dígitos; un número sin puntos también es aceptado.

variante sin múltiples dígitos:

^\d(\.\d)*$ 

variantes en las que se requiere al menos un punto:

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

No se olvide que en Java que tiene que escapar de los símbolos \, así que el código tendrá el siguiente aspecto:

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

¿Desea una expresión regular que quiere números y períodos pero comienza y termina con un número?

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

Pero esto no va a coincidir con cosas como 1. que no tiene ningún punto, pero comienza y termina con un número.

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

supongo que esto es lo que quiere:

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

Explicación: Se acepta números separados por puntos; comienza y termina con el número; un número puede tener múltiples dígitos; un número sin puntos no es aceptado.

La salida así-

  • 1,1
  • 1,12
  • 1.1.5
  • 1.15.1.4
Cuestiones relacionadas