¿Cómo elimino todo hasta la primera palabra con al menos 2 letras, pero incluyo los números que tocan el comienzo de las 2+ letras? El siguiente código actualmente elimina todo hasta la primera letra.
$test = "1234 123423-34 b4 3-z a 234 This is a test";
echo preg_replace('/^[^A-Za-z]+/', '', $test);
Debería salir: Esta es una prueba
$test = "1234 123423-34 b4 3-z a 234This is a test";
echo preg_replace('/^[^A-Za-z]+/', '', $test);
Debería salir: 234 Esta es una prueba
0
heyitsmyusername
19 mar. 2017 a las 18:51
2 respuestas
La mejor respuesta
Puedes usar este patrón:
/^.*?(?=\d*[a-z]\d*[a-z]|$)/i
# ^ ^------ lookahead: followed by a "word" with 2 letters or the end of the string
# '--------- any character + non-greedy quantifier: all characters until
La misma en unicode:
/.*?(?=\d*\pL\d*\pL|$)/Au
3
Casimir et Hippolyte
19 mar. 2017 a las 16:10
Otro con límites de palabras:
^.*?(?=\b\d*(?i)[a-z]{2,}\b)
Consulte una demostración en regex101.com .
0
Jan
19 mar. 2017 a las 16:15
Preguntas relacionadas
Nuevas preguntas
php
PHP es un lenguaje de secuencias de comandos interpretado, dinámico, orientado a objetos y ampliamente utilizado, diseñado principalmente para el desarrollo web del lado del servidor. Se utiliza para preguntas sobre el lenguaje PHP.