Saltar al contenido

¿Cuál es la expresión regular de Java para solo números enteros? string?

Te doy la bienvenida a nuestro sitio web, aquí vas a hallar la respuesta de lo que buscas.

Solución:

En Java regex, no usas delimitadores /:

nuevo_precio.getText().matches("^\d+$")

Ya que String.matches() (o Matcher.matcher()) forzar el todo string para hacer coincidir contra el patrón para volver truela ^ y $ en realidad son redundantes y se pueden eliminar sin afectar el resultado. Esto es un poco diferente en comparación con JavaScript, PHP (PCRE) o Perl, donde “coincidir” significa encontrar una subcadena en el objetivo string que coincida con el patrón.

nuevo_precio.getText().matches("\d+") // Equivalent solution

Sin embargo, no está de más dejarlo allí, ya que significa la intención y hace que la expresión regular sea más portátil.


limitar a exactamente números de 4 dígitos:

"\d4"

Como ya han dicho otros, java no usa delimitadores. Él string que está tratando de hacer coincidir no necesita las barras inclinadas finales, por lo que en lugar de /^\d+$/ su string debería haber sido ^\d+$.

Ahora sé que esta es una vieja pregunta, pero la mayoría de la gente aquí olvidó algo muy importante. Él correcto expresiones regulares para enteros:

^-?d+$

Desglosándolo:

^         String start metacharacter (Not required if using matches() - read below)
 -?       Matches the minus character (Optional)
   d+   Matches 1 or more digit characters
       $  String end metacharacter (Not required if using matches() - read below)

Por supuesto que en Java necesitaría una barra invertida doble en lugar de la barra invertida normal, por lo que Java string que coincide con la expresión regular anterior es ^-?\d+$


NOTA: Él ^$ (string inicio/fin) los caracteres no son necesarios si está utilizando .matches():

Bienvenido a los mal llamados de Java .matches() método… Intenta y hace coincidir TODAS las entradas. Desafortunadamente, otros idiomas han seguido su ejemplo 🙁

– Tomado de esta respuesta

La expresión regular seguiría funcionando con el ^$ de todos modos. Aunque es opcional, todavía lo incluiría para la legibilidad de expresiones regulares, como en cualquier otro caso cuando no coincide con todo el string por defecto (que es la mayor parte del tiempo si no está usando .matches()) usarías esos caracteres


Para hacer coincidir lo contrario:

^D+$

Él D es todo lo que no es un dígito. Él D (No dígitos) niega d (dígitos).

Expresión regular entera en regex101


Tenga en cuenta que esto es sólo para enteros. La expresión regular para dobles:

^-?d+(.d+)?$

Desglosándolo:

^         String start metacharacter (Not required if using matches())
 -?               Matches the minus character. The ? sign makes the minus character optional.
   d+           Matches 1 or more digit characters
       (          Start capturing group
        .d+     A literal dot followed by one or more digits
             )?   End capturing group. The ? sign makes the whole group optional.
               $  String end metacharacter (Not required if using matches())

Por supuesto que en Java en lugar de d y . tendrías barras invertidas dobles como lo hace el ejemplo anterior.

Doble expresión regular en regex101

Java no usa barras para delimitar expresiones regulares.

.matches("\d+")

Deberías hacerlo.

para su información el String.matches() El método debe coincidir con el todo entrada para volver true.


Incluso en lenguajes como perl, las barras no son parte de la expresión regular; ellos son delimitadores – parte del código de la aplicación, nada que ver con la expresión regular

Si te animas, eres capaz de dejar un escrito acerca de qué le añadirías a este post.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *