{"id":5290,"date":"2026-01-18T13:05:18","date_gmt":"2026-01-18T12:05:18","guid":{"rendered":"https:\/\/sutilweb.eu\/?page_id=5290"},"modified":"2026-01-18T13:05:19","modified_gmt":"2026-01-18T12:05:19","slug":"33-expresiones-regulares-en-php","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/php\/php-practico\/33-expresiones-regulares-en-php\/","title":{"rendered":"33. Expresiones regulares en PHP"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo hablaremos sobre las <strong>expresiones regulares<\/strong> pero orientado a <strong>PHP.<\/strong>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 son las expresiones regulares<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A menudo vamos a solicitar informaci\u00f3n al usuario que se encuentra interactuando con nuestra aplicaci\u00f3n, por ejm, vamos a querer solicitar el nombre, apellido&#8230; Cuando solicitamos informaci\u00f3n general no va a haber ninguna dificultad ya que si queremos almacenar esa informaci\u00f3n la almacenamos tal y como el usuario nos la env\u00eda. El problema viene cuando pedimos informaci\u00f3n como email, donde el usuario puede escribir cualquier cosa. En estos casos es importante validar la informaci\u00f3n que el usuario nos env\u00eda. Lo mismo ocurre si le pedimos al usuario su p\u00e1gina web o de Facebook, nos puede enviar cualquier informaci\u00f3n que no sea una URL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hay otras ocasiones en las que queramos extraer una determinada porci\u00f3n del texto que nos est\u00e1n proporcionando. A partir de expresiones regulares vamos a poder extraer dicha porci\u00f3n de texto que el usuario haya introducido.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo se define una expresi\u00f3n regular<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una expresi\u00f3n regular viene a ser una cadena que podemos almacenar en una variable. Lo primero, para definir una expresi\u00f3n,&nbsp;<strong>toda expresi\u00f3n debe estar delimitada por caracteres<\/strong> <strong>alfanum\u00e9ricos<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La funci\u00f3n que vamos a utilizar para el uso de expresiones regulares es <strong><em>preg_match(expresi\u00f3n_regular, cadena);<\/em><\/strong> de la siguiente forma.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Hola mundo, como est\u00e1s\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/mundo\/\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Como podemos ver en el ejm de arriba, la expresi\u00f3n se coloca entre dos barras (<strong><em>\/expresi\u00f3n\/<\/em><\/strong>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Encontrar texto al inicio de la cadena<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si queremos especificar que lo que queremos encontrar se encuentra a la izquierda, para ello utilizamos el car\u00e1cter (<strong><em>^<\/em><\/strong>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Paseo Avda. Espa\u00f1a 5\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/^Avda\/\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\"; \/\/ Imprimir\u00e1 el else\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Imprimir\u00e1 en pantalla el else, ya que <strong><em>Avda<\/em><\/strong> no se encuentra al inicio de la cadena.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Expresiones regulares son case sensitive<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Las expresiones regulares son sensibles a may\u00fasculas y min\u00fasculas, por lo que para que dejen de ser sensibles hay que agregarles lo que se denomina modificador, que en este caso es la palabra (<strong><em>i<\/em><\/strong>) el cual se escribe al final del segundo (<strong><em>\/<\/em><\/strong>), de la siguiente manera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Avda. Espa\u00f1a 5\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba, incluimos el modificador i\n \n  $expresion = \"\/^avda\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\"; \/\/ Imprimir\u00e1 el else\n  }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Determinado patr\u00f3n al final de la cadena<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para verificar que un patr\u00f3n se encuentra al final de la cadena utilizamos el car\u00e1cter (<strong><em>$<\/em><\/strong>) de la siguiente manera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Avda. Espa\u00f1a 123\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/123$\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nos devolver\u00e1 un <strong><em>TRUE<\/em><\/strong> ya que &#8216;<strong><em>123<\/em><\/strong>&#8216; s\u00ed se encuentra al final de la cadena.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Meta caracteres<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tanto el s\u00edmbolo de d\u00f3lar (<strong><em>$<\/em><\/strong>) como el s\u00edmbolo (<strong><em>^<\/em><\/strong>) se los conoce como <strong>metacaracteres<\/strong>, pero estos no son los \u00fanicos meta caracteres, existen algunos m\u00e1s.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>^<\/em><\/strong>: busca el patr\u00f3n al inicio de la cadena<\/li>\n\n\n\n<li><strong><em>$<\/em><\/strong>:\u00a0busca el patr\u00f3n al final de la cadena<\/li>\n\n\n\n<li><strong><em>[]<\/em><\/strong>: busca\u00a0cualquiera de los patrones entre los corchetes<\/li>\n\n\n\n<li><strong><em>&#8211;<\/em><\/strong> (a-u):\u00a0 busca desde la a hasta la u<\/li>\n\n\n\n<li>Lista de exclusi\u00f3n: para ello volvemos a utilizar el s\u00edmbolo <strong><em>^<\/em><\/strong>. Este s\u00edmbolo\u00a0<strong>debe ir al principio<\/strong>.<\/li>\n\n\n\n<li>Car\u00e1cter de escape: cuando queremos usar s\u00edmbolos que funcionan como meta caracteres, y que sean s\u00f3lo caracteres, hemos de usar el car\u00e1cter de escape, representado por el signo (<strong><em>\\<\/em><\/strong>)<\/li>\n\n\n\n<li>Meta caracter punto (.): el punto hace referencia a cualquier caracter de cualquier tipo (ya sean vocales, n\u00fameros o caracteres no alfanum\u00e9ricos)<\/li>\n\n\n\n<li>\\w: hace referencia a cualquier caracter alfanum\u00e9rico (sean n\u00fameros o letras y el guion bajo)<\/li>\n\n\n\n<li>\\W: hace referencia\u00a0a caracteres NO alfanum\u00e9ricos<\/li>\n\n\n\n<li>\\d: hace referencia a caracteres num\u00e9ricos<\/li>\n\n\n\n<li>\\D: hace referencia a caracteres NO num\u00e9ricos<\/li>\n\n\n\n<li>El car\u00e1cter puede o no puede existir: para ello se utiliza el meta car\u00e1cter asteriso (<strong><em>*<\/em><\/strong>) al final del car\u00e1cter que deseamos verificar<\/li>\n\n\n\n<li>El car\u00e1cter existe por lo menos una vez: lo que significa que puede existir al menos una o m\u00e1s veces. Para ello se utiliza el meta car\u00e1cter m\u00e1s (<strong><em>+<\/em><\/strong>) al final del car\u00e1cter que queremos verificar<\/li>\n\n\n\n<li>Existencia o NO de un determinado caracter:\u00a0 para ello se utiliza el meta caracter de interrogaci\u00f3n (<strong><em>?<\/em><\/strong>) que indicar\u00e1 que el caracter pueda o no existir en la expresi\u00f3n, y cumplir\u00e1 la validaci\u00f3n est\u00e9 o no dicho caracter.<\/li>\n\n\n\n<li>Cantidad de veces que se pueda repetir un caracter: para ello se utiliza las llaves <strong><em>{3}<\/em><\/strong>. Dentro de las llaves ponemos la cantidad de veces que se debe repetir el caracter (en este caso 3 veces). Tambi\u00e9n podemos usar la expresi\u00f3n\u00a0<strong><em>{2, 5}<\/em><\/strong> que indica que el caracter se puede encontrar entre 2 y 5 veces<\/li>\n\n\n\n<li>Meta caracter par\u00e9ntesis <strong><em>()<\/em><\/strong>: los par\u00e9ntesis en las expresiones regulares permiten crear <strong>subpatrones,<\/strong> como peque\u00f1os patrones dentro del patr\u00f3n principal. <strong>Se puede decir que este meta caracter es el m\u00e1s importante en las expresiones regulares<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm corchetes<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Hole\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/hol&#91;aeiou]\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm corchetes y gui\u00f3n medio<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Hole\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/hol&#91;a-u]\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm corchetes y gui\u00f3n medio (2)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Hol5\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/hol&#91;a-u0-9]\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm lista de exclusi\u00f3n<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Hola\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/hol&#91;^a-u]\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\"; \/\/ Imprimir\u00e1 esto\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm car\u00e1cter de escape<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Hol]\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/hol&#91;a-u\\]]\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm uso del meta car\u00e1cter asterisco (*)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Holaaaaaaa\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  \/\/ El car\u00e1cter a se est\u00e1 verificando varias veces\n  $expresion = \"\/hola*\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En el caso del asterisco, puede o no puede existir, por lo tanto si no encuentra el car\u00e1cter <strong><em>a<\/em><\/strong>, imprimir\u00eda un TRUE.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm uso del meta car\u00e1cter m\u00e1s (+)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Hol\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/hola+\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\";\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso la cadena NO cumplir\u00e1 la condici\u00f3n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm uso del meta caracter de interrogaci\u00f3n (?)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Hol\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/ho?la\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\"; \/\/ IMPRIMIR\u00c1 TRUE\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm uso de llaves<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Holaaa\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/hola{3}\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\"; \/\/ IMPRIMIR\u00c1 TRUE\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm uso de par\u00e9ntesis y barra perpendicular (|)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Llegar\u00e9 pronto que voy volando\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/Llegar\u00e9 pronto que voy (vol|and)ando\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena)){\n    echo \"La cadena cumple la condici\u00f3n\"; \/\/ IMPRIMIR\u00c1 TRUE\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Capturar subpatrones<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Los subpatrones que tenemos podemos capturarlos. Si observamos el \u00faltimo ejercicio, queremos saber si se ha utilizado el valor <strong><em>vol<\/em><\/strong> o el valor <strong><em>and<\/em><\/strong> del subpatr\u00f3n creado. Dentro del m\u00e9todo <strong><em>preg_match()<\/em><\/strong> pasamos un tercer par\u00e1metro llamado <strong><em>$matches<\/em><\/strong>, este va a crear un Array, dentro de dicho Array van a quedar capturados los valores de dicho subpatr\u00f3n, en nuestro caso el valor que va a quedar capturado dentro del Array es&nbsp;<strong><em>vol<\/em><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veamos el ejm de arriba con la nueva sintaxis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n  $cadena = \"Llegar\u00e9 pronto que voy volando\";\n\n  \/\/ Expresi\u00f3n que queremos verificar si existe en la cadena de arriba\n  $expresion = \"\/Llegar\u00e9 pronto que voy (vol|and)ando\/i\";\n\n  \/\/ M\u00e9todo que permite verificar si la expresi\u00f3n est\u00e1 en la cadena\n  \/\/ Este m\u00e9todo devolver\u00e1 un valor booleano \n  if(preg_match($expresion, $cadena, $matches)){\n    echo \"La cadena cumple la condici\u00f3n\"; \/\/ IMPRIMIR\u00c1 TRUE\n  } else {\n    echo \"La cadena NO cumple la condici\u00f3n\";\n  }\n\n  var_dump($matches);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Gracias a estos subpatrones nosotros podremos hacer capturas de los id de la web de <strong>Youtube<\/strong> por ejm.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ejm pr\u00e1ctico<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a crear un ejm pr\u00e1ctico en el que vamos a determinar, como dijimos antes, el id de un video de Youtube.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n  \/\/ Recuperar un video mediante un id de Youtube\n  $url = \"https:\/\/youtu.be\/UEFY1IT0Zfg?si=gBsiPjaJ15oOJ8ZF\";\n\n  \/\/ Otro tipo de URL en Youtube\n  \/\/ $url = \"https:\/\/www.youtube.com\/watch?v=UEFY1IT0Zfg\";\n\n  $patron = \"%^(?:https:\/\/)?(?:www\\.)?(?:youtu\\.be\/|youtube\\.com\/watch\\?v=)(\\w{10,12})%i\";\n\n  if(preg_match($patron, $url, $matches)){\n    echo \"La URL es v\u00e1lida\";\n    echo \"&lt;br \/>\";\n    var_dump($matches);\n  } else {\n    echo \"La URL no es v\u00e1lida\";\n  }\n\n  \/\/ Vamos a rescatar el id, para ello creamos el subpatr\u00f3n que rescate el id de Youtube\n  \/\/ Si no nos interesa recuperar la informaci\u00f3n de alg\u00fan subpatr\u00f3n, podemos anteponer ?: en el subpatr\u00f3n\n  \/\/ que no queramos recuperar<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En este cap\u00edtulo hablaremos sobre las expresiones regulares pero orientado a PHP.&nbsp; Qu\u00e9 son las expresiones regulares A menudo vamos a solicitar informaci\u00f3n al usuario que se encuentra interactuando con nuestra aplicaci\u00f3n, por ejm, vamos a querer solicitar el nombre, apellido&#8230; Cuando solicitamos informaci\u00f3n general no va a haber ninguna dificultad ya que si queremos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4518,"menu_order":32,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5290","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"En este cap\u00edtulo hablaremos sobre las expresiones regulares pero orientado a PHP.&nbsp; Qu\u00e9 son las expresiones regulares A menudo vamos a solicitar informaci\u00f3n al usuario que se encuentra interactuando con nuestra aplicaci\u00f3n, por ejm, vamos a querer solicitar el nombre, apellido&#8230; Cuando solicitamos informaci\u00f3n general no va a haber ninguna dificultad ya que si queremos&hellip;","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5290","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=5290"}],"version-history":[{"count":3,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5290\/revisions"}],"predecessor-version":[{"id":5293,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5290\/revisions\/5293"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/4518"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=5290"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}