Expresiones regulares: métodos search, replace, split, match del objeto String.


El objeto String tiene métodos que reciben como parámetro una expresión regular.

El primer método es el search. Este método busca la primer ocurrencia del string según la expresión que le hemos pasado como parámetro. Devuelve un entero indicando la posición donde comienza la cadena encontrada o un -1 si no encuentra el patrón en el string.





<html>
<head>
</head>
<body>

<script type="text/javascript">
  var oracion='La noche está muy oscura y estrellada.';
  if (oracion.search(/estrella/)!=-1)
    alert('el string estrella está contenido en la variable oracion');
</script>

</body>
</html>

Hemos dispuesto un if para controlar si el string 'estrella' está contenido en la variable oración:

  if (oracion.search(/estrella/)!=-1)
    alert('el string estrella está contenido en la variable oracion');

Por supuesto que podemos emplear expresiones regulares tan complejas como necesitemos utilizando distintos metacaracteres y modificadores.

El segundo método del objeto String que veremos es el replace.

El método replace realiza una búsqueda y reemplazo. Se toma una expresión regular como primer parámetro y un string de reemplazo como su segundo argumento. Si la expresión regular tiene la bandera g, el método replace sustituye todas las coincidencias en la cadena de reemplazo, en caso contrario, se reemplaza sólo la primera coincidencia que encuentre.

<html>
<head>
</head>
<body>

<script type="text/javascript">
  var oracion='uno dos tres uno dos tres uno dos tres';
  var cadena=oracion.replace(/uno/g,'1');
  alert(cadena); //1 dos tres 1 dos tres 1 dos tres
</script>

</body>
</html>

En este problema queremos obtener otro String sustituyendo todas las cadenas 'uno' por el caracter '1'. Para hacer que se sustituyan todas las ocurrencias debemos emplear el modificador g:

  var cadena=oracion.replace(/uno/g,'1');

Es importante tener en cuenta que la variable que llama al método replace no se modifica, sino que retorna otro String con el resultado.

El tercer método es el split que tiene por objetivo subdividir un string y retornar un vector con dichas partes. Para la división toma en cuenta la expresión regular pasada como parámetro.

<html>
<head>
</head>
<body>

<script type="text/javascript">
  var cadena='(2,3)-(4,4)-(9,3)';
  var vec=cadena.split(/-/);
  for(var x=0;x<vec.length;x++)
  {
    document.write(vec[x]+'<br>');
  }
</script>

</body>
</html>

El vector vec almacena los valores: (2,3) (4,4) y (9,3), ya que la expresión regular indicada define el caracter - como patrón de corte.

El último método a analizar del objeto String es el match. Tiene como parámetro una expresión regular y retorna un vector con todos los string que cumplen el patrón especificado (siempre y cuando hallamos activado la bandera 'g' (global))

Problema

Se tiene un string donde tenemos almacenados los nombres de personas seguido de sus edades. Generar un vector solo con las edades de todas las personas.

<html>
<head>
</head>
<body>

<script type="text/javascript">
  var cadena='juan 10 luis 43 pedro 21 carlos 33';
  var vec=cadena.match(/\d+/g);
  for(var x=0;x<vec.length;x++)
  {
    document.write(vec[x]+'<br>');
  }
</script>

</body>
</html>

Retornar