diff options
Diffstat (limited to 'files/es/web/javascript/reference/global_objects/regexp/exec/index.html')
-rw-r--r-- | files/es/web/javascript/reference/global_objects/regexp/exec/index.html | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/files/es/web/javascript/reference/global_objects/regexp/exec/index.html b/files/es/web/javascript/reference/global_objects/regexp/exec/index.html new file mode 100644 index 0000000000..a285f13a40 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/regexp/exec/index.html @@ -0,0 +1,239 @@ +--- +title: RegExp.prototype.exec() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/exec +tags: + - Expresiones Regulares + - JavaScript + - Prototipo + - Referencia + - RegExp + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/exec +original_slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/exec +--- +<div>{{JSRef}}</div> + +<p>El método <strong><code>exec()</code></strong> ejecuta una busqueda sobre las coincidencias de una expresión regular en una cadena especifica. Devuelve el resultado como array, o {{jsxref("null")}}.</p> + +<p>Si está ejecutando una expresión regular solo para buscar si algo se cumple o no, usa el método {{jsxref("RegExp.prototype.test()")}} o el método {{jsxref("String.prototype.search()")}}.</p> + +<h2 id="Sintaxis">Sintaxis</h2> + +<pre class="syntaxbox"><var>regexObj</var>.exec(<em>cadena</em>)</pre> + +<h3 id="Parametros">Parametros</h3> + +<dl> + <dt><code>cadena</code></dt> + <dd>Cadena sobre la cual se quiere aplicar la expresión regular</dd> +</dl> + +<h3 id="Valor_devuelto">Valor devuelto</h3> + +<p>Si se encuentran coincidencial, el método <code>exec()</code> devuelve un array y actualiza las propiedades del objecto de la expresión regular. El array devuelto contiene los elementos encontrados en su primer elemento, y un elemento por cada parte de la expresión regular que se encuentra entre parentesis y se encuentra dentro del texto que fué capturado.</p> + +<p>Si la busqueda falla, el método <code>exec()</code> devuelve {{jsxref("null")}}.</p> + +<h2 id="Descripción">Descripción</h2> + +<p>Considerando el siguiente ejemplo:</p> + +<pre class="brush: js">// Busca "quick brown" seguido de "jumps", ignorando los caracteres que se +// encuentren entre medias. +// Recuerda "brown" y "jumps" +// Ignora mayusculas y minusculas +var re = /quick\s(brown).+?(jumps)/ig; +var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog'); +</pre> + +<p>La siguiente tabla muestra el resultado de este script:</p> + +<table class="fullwidth-table"> + <tbody> + <tr> + <td class="header">Objeto</td> + <td class="header">Propiedad/Índice</td> + <td class="header">Descripción</td> + <td class="header">Ejemplo</td> + </tr> + <tr> + <td rowspan="4"><code>result</code></td> + <td><code>[0]</code></td> + <td>Todas las partes de la cadena que cumplen la expresión regular</td> + <td><code>Quick Brown Fox Jumps</code></td> + </tr> + <tr> + <td><code>[1],...[<em>n</em>]</code></td> + <td> + <p>Las subcadenas entre parentesis que han sido encontradas, si hay alguna. El número de subcadenas encontradas es ilimitado</p> + </td> + <td><code>[1] = Brown<br> + [2] = Jumps</code></td> + </tr> + <tr> + <td><code>index</code></td> + <td>El índice de base-0 del elemento encontrado en la cadena.</td> + <td><code>4</code></td> + </tr> + <tr> + <td><code>input</code></td> + <td>La cadena original.</td> + <td><code>The Quick Brown Fox Jumps Over The Lazy Dog</code></td> + </tr> + <tr> + <td rowspan="5"><code>re</code></td> + <td><code>lastIndex</code></td> + <td>El índice sobre el cual empieza la siguiente busqueda. Cuando no se usa g (busqueda global), esto va a ser siempre 0.</td> + <td><code>25</code></td> + </tr> + <tr> + <td><code>ignoreCase</code></td> + <td>Indica si la bandera "<code>i</code>" ha sido usada para ignorar mayusculas y minusculas.</td> + <td><code>true</code></td> + </tr> + <tr> + <td><code>global</code></td> + <td>Indica si la bandera "<code>g</code>" fue usada para hacer una busqueda global.</td> + <td><code>true</code></td> + </tr> + <tr> + <td><code>multiline</code></td> + <td>Indica si la bandera "<code>m"</code> fue usada para buscar en cadenas sobre multiples lineas</td> + <td><code>false</code></td> + </tr> + <tr> + <td><code>source</code></td> + <td>El texto del patrón de busqueda</td> + <td><code>quick\s(brown).+?(jumps)</code></td> + </tr> + </tbody> +</table> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Encontrando_coincidencias_sucesivas">Encontrando coincidencias sucesivas</h3> + +<p>Si tu expresión regular contiene la bandera "<code>g</code>", puedes usar el método <code>exec()</code> varias veces para encontrar coincidencias sucesivas en la misma cadena. Cuando lo haces, la busqueda empieza en la subcadena <code>str</code> especificada por la propiedad {{jsxref("RegExp.lastIndex", "lastIndex")}} de la expresión regular ({{jsxref("RegExp.prototype.test()", "test()")}} también movera hacia adelante el indice de la propiedad {{jsxref("RegExp.lastIndex", "lastIndex")}}). Por ejemplo, asumiendo que tienes este script:</p> + +<pre class="brush: js">var myRe = /ab*/g; +var str = 'abbcdefabh'; +var myArray; +while ((myArray = myRe.exec(str)) !== null) { + var msg = 'Se ha encontrado ' + myArray[0] + '. '; + msg += 'La siguiente coincidencia empieza en el indice ' + myRe.lastIndex; + console.log(msg); +} +</pre> + +<p>Este script muestra el siguiente texto:</p> + +<pre>Se ha encontrado abb. La siguiente coincidencia empieza en el indice 3 +Se ha encontrado ab. La siguiente coincidencia empieza en el indice 9 +</pre> + +<p>Nota: No uses la expresión regular literalmente (o el constructor {{jsxref("RegExp")}}) dentro de la condición del bucle while o se creará un bucle infinito si hay una coincidencia, por culpa de que la propiedad {{jsxref("RegExp.lastIndex", "lastIndex")}} va a ser reiniciada por cada iteración del bucle. Además asegurate de que has usado la bandera de busqueda global "g" o se creará un bucle también.</p> + +<h3 id="Usando_exec()_con_RegExp_literales">Usando <code>exec()</code> con <code>RegExp</code> literales</h3> + +<p>También se puede usar <code>exec() sin crear un objeto de </code> {{jsxref("RegExp")}}:</p> + +<pre class="brush: js">var matches = /(hola \S+)/.exec('Esto es un hola mundo!'); +console.log(matches[1]); +</pre> + +<p>Esto logueará un mensaje que contiene 'hola mundo!'.</p> + +<h2 id="Especificaciones">Especificaciones</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificación</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Definición inicial. Implementado en JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.6.21', 'RegExp.exec')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-regexp.prototype.exec', 'RegExp.exec')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-regexp.prototype.exec', 'RegExp.exec')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Compatiblidad_con_navegadores">Compatiblidad con navegadores</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Funcionalidad</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Soporte básico</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Funcionalidad</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Móvil (Gecko)</th> + <th>IE Móvil</th> + <th>Opera Móvil</th> + <th>Safari Móvil</th> + </tr> + <tr> + <td>Soporte básico</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Ver_también">Ver también</h2> + +<ul> + <li>Capítulo de <a href="/en-US/docs/Web/JavaScript/Guide/Regular_Expressions">Expresiones Regulares</a> en la <a href="/en-US/docs/Web/JavaScript/Guide">Guía de Javascript</a></li> + <li>{{jsxref("RegExp")}}</li> +</ul> |