Error en la validation de la expresión regular de la matrícula del automobile

Estoy ejecutando la siguiente testing para validar la matrícula de un automobile. ¿Qué estoy haciendo mal?

testValido de retorno inválido

TestValid return success

@Test fun testInvalid() { val value = "ABC12345" val pattern = Pattern.compile("[AZ]{3}[0-9]{4}") val matcher = pattern.matcher(value) val found = matcher.find() System.out.print("$value is valid: $found") Assert.assertFalse(found) } @Test fun testValid() { val value = "ABC1234" val pattern = Pattern.compile("[AZ]{3}[0-9]{4}") val matcher = pattern.matcher(value) val found = matcher.find() System.out.print("$value is valid: $found") Assert.assertTrue(found) } 

Necesita usar el carácter $ al final de regEx para indicar el final:

 @Test fun testInvalid() { val value = "ABC12345" val pattern = Pattern.compile("[AZ]{3}[0-9]{4}$") val matcher = pattern.matcher(value) val found = matcher.find() System.out.print("$value is valid: $found") Assert.assertFalse(found) } @Test fun testValid() { val value = "ABC1234" val pattern = Pattern.compile("[AZ]{3}[0-9]{4}$") val matcher = pattern.matcher(value) val found = matcher.find() System.out.print("$value is valid: $found") Assert.assertTrue(found) } 
  • ¿Por qué no mira hacia adelante y mira detrás del trabajo de Regex en Kotlin?
  • Regex: coincide con palabras que no son cadenas
  • Regex no coincide en Kotlin
  • Kotlin Regex llamado grupos de apoyo