Ya, por eso te he dicho que deberias validar y no sanitizar en este caso. Si, puedes hacer una regex que busque solo esa coincidencia y quite el resto:
Y esto solo te cogeria lo que buscas.. pero es que lo cogerá de cualquier lado, aunque el string sea este:
y así te estás exponiendo a que generen un string gigante que casualmente podría contener un código válido y alá, a correr.
Intenta validar antes de sanitizar. Comprueba si el string que te están pasando cumple con el formato que pides, si no lo hace, mandales a fregar, pero no intentes hacerle el favor a un posible atacante.
Saludos
Código
form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/.*([0-9]{20}[A-Z]{2}).*/g, '$1');
Y esto solo te cogeria lo que buscas.. pero es que lo cogerá de cualquier lado, aunque el string sea este:
Código:
sad123456789012345das67890AA1234567890123dasdasd45678
90AA12345678901234567890AA12345678901234567890AA123456789
01234567890AA12345678901234567890AA12345678901234567890AA
12345678901234567890AA12345678901234567890AA123456789sadsa
dsa01d45678901234567890dasdAA12345678901234567890AA1234567
890124567890AA12345678901234567890AA12345678901234567890AA
12345678901234567asdas890AA12345678901234567890AA1234567890
1234567890AA12345678901234567890AA12345678901234567890AA123
45678901234567890AA12345678901234567890AAASDASDASDSADSA123
45678901234567890AA12345678901234567890AA
90AA12345678901234567890AA12345678901234567890AA123456789
01234567890AA12345678901234567890AA12345678901234567890AA
12345678901234567890AA12345678901234567890AA123456789sadsa
dsa01d45678901234567890dasdAA12345678901234567890AA1234567
890124567890AA12345678901234567890AA12345678901234567890AA
12345678901234567asdas890AA12345678901234567890AA1234567890
1234567890AA12345678901234567890AA12345678901234567890AA123
45678901234567890AA12345678901234567890AAASDASDASDSADSA123
45678901234567890AA12345678901234567890AA
y así te estás exponiendo a que generen un string gigante que casualmente podría contener un código válido y alá, a correr.
Intenta validar antes de sanitizar. Comprueba si el string que te están pasando cumple con el formato que pides, si no lo hace, mandales a fregar, pero no intentes hacerle el favor a un posible atacante.
Saludos
Si igual es más que nada para mejorar un poquito la "experiencia del usuario" ya que esto lo valido con otras técnicas en PHP no necesariamente con expresiones regulares, con poner maxlength = 22 en dicho input no hay problema (ya se que esto lo pueden editar en inspeccionar elemento) a lo que voy es que no me interesa tanto como quede esto en temas de seguridad...
No se si soy muy duro o no entiendo o que, pero tampoco el código este me sirvió.
Según lo que pude entender es que este código debería funcionar pero como dijiste arriba si me ponen cadenas muy largas habrá problemas (pero igual no hay problema para mi que esto pase)
Código
form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/.*([0-9]{20}[A-Z]{2}).*/g, '$1');