Foros del Web » Programando para Internet » Javascript »

Duda con Regular Expressions [Resuleto].

Estas en el tema de Duda con Regular Expressions [Resuleto]. en el foro de Javascript en Foros del Web. Hola. Tengo una duda con respecto al uso de las Regular Expressions. El caso es que veo que no funciona de la misma manera en ...
  #1 (permalink)  
Antiguo 17/06/2013, 08:17
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 10 años, 10 meses
Puntos: 0
Duda con Regular Expressions [Resuleto].

Hola. Tengo una duda con respecto al uso de las Regular Expressions. El caso es que veo que no funciona de la misma manera en PHP y en JavaScript. El caso es que hice un Script en PHP que luego adapté a JavaScript el cual permite generar una búsqueda de unos valores registrados entre dos elementos específicos para luego ser substituidos por otra cosa. Un ejemplo de funcionamiento del Script puede ser el siguiente.

Este será el HTML que lea el archivo donde tengo el problema:

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>
			Dudas y aclaraciones.
		</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<meta name="Authors" content="KY." />
		<meta name="Description" content="Dudas y aclaraciones." />
		<meta name="Foros de ayuda" content="Foros del Web." />
		<meta name="Colaboradores" content="KY." />
		<meta name="Clase JS HTML" content="KY." />
		<meta name="Foros de ayuda para la clase JS HTML" content="Foros del Web." />
		<meta name="Colaboradores para la clase JS HTML" content="KY." />
		<script src="dudas.js" language="JavaScript 1.2" type="text/javascript">
		</script>
	</head>
	<body>
	</body>
</html> 
Este archivo es un sencillo HTML que leerá el archivo "dudas.js". Este último archivo es el siguiente:

Código Javascript:
Ver original
  1. // Clase para almacenar todo lo relacionado con la duda.
  2. function HTML(){
  3.     // Texto de ejemplo conforme a la tarea que se quiere realizar.
  4.     this.HTML_de_pruebas='<div id="cosa"><div id="Cosa_Nivel1_Numero1"></div><div id="Cosa_Nivel1_Numero2"><div id="Cosa_Nivel1_Numero2_Nivel2_Numero1"></div><div id="Cosa_Nivel1_Numero2_Nivel2_Numero2"></div></div><div id="Cosa_Nivel1_Numero3"></div><div id="Cosa_Nivel1_Numero4"></div><div id="Cosa_Nivel1_Numero5"></div></div>';
  5.     // Función que crea una capa de trabajo para visualizar ejemplos.
  6.     this.Crear_capa_de_trabajo=function(Capa,Nombre,Tipo_de_cajon){
  7.         var Div=document.createElement(Tipo_de_cajon);
  8.         Div.id=Nombre;
  9.         Capa.appendChild(Div)
  10.     }
  11.     // Función que permite verificar el funcionamiento de la base.
  12.     this.Prueba_de_funcionamiento=function(HTML,Capa_de_trabajo){
  13.         var Capa=document.getElementById(Capa_de_trabajo),
  14.         Contador=0,
  15.         Contenido="";
  16.         HTML.replace(/.{3}/g,function(Patron,Posicion){
  17.             Contenido+="Elemento encontrado número "+Contador+":\rPatrón seleccionado: "+Patron+"\rNúmero de caracteres del Patrón: "+Patron.length+"\rPosición dentro del String HTML: "+Posicion+"\r\r";
  18.             Contador++
  19.         });
  20.         Capa.innerHTML=Contenido
  21.     }
  22.     // Función que intenta dividir cada una de las pestañas HTML para visualizarlas individualmente (No pasa esto, jeje).
  23.     this.Dividir_y_mostrar_parametros=function(HTML,Capa_de_trabajo){
  24.         var Capa=document.getElementById(Capa_de_trabajo),
  25.         Contador=0,
  26.         Contenido="";
  27.         HTML.replace(/\<.*>/g,function(Patron,Posicion){
  28.             Contenido+="Elemento encontrado número "+Contador+":\rPatrón seleccionado: "+Patron+"\rNúmero de caracteres del Patrón: "+Patron.length+"\rPosición dentro del String HTML: "+Posicion+"\r\r";
  29.             Contador++
  30.         });
  31.         Capa.innerHTML=Contenido
  32.     }
  33. }
  34. HTML=new HTML;
  35. window.onload=function(){
  36.     HTML.Crear_capa_de_trabajo(document.getElementsByTagName("body")[0],"Ejemplo","textarea");
  37.     HTML.Dividir_y_mostrar_parametros(HTML.HTML_de_pruebas,"Ejemplo")
  38. }

Este archivo contiene una clase la cual contiene la duda y las posibles soluciones de cada uno de los que participen en ello.

El caso es que ahí especifico una función que en PHP con ese mismo formato de Regular Expresions me divide el String con respecto a cada una de las pestañas (Ya sean de apertura, o de cierre) de manera individual. Sin embargo, aquí me expone el texto completo como si hiciera una búsqueda desde el principio con el primer valor, y luego desde el final para el último valor, englobándome todo como si fuera un único resultado de búsqueda. ¿Qué estoy haciendo mal? Llevo semanas buscando información y no encuentro nada relativo. Aun soy muy nuevo con el tema de las Expresiones Regulares. ¿Se os ocurre alguna idea?. Gracias.

Duda resuelta. El caso es que no puedes buscar cualquier elemento dentro del rango de búsqueda, sino que debes limitar la búsqueda a cualquier elemento que no esté incluído en el final del rango de búsqueda. Gracias.

Última edición por cktky; 17/06/2013 a las 09:27 Razón: Resuelta la duda.

Etiquetas: funcion, html, js, php, regular
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:24.