2012-09-12 7 views
5

Básicamente estoy actualizando una aplicación web antigua para que sea compatible con múltiples navegadores. Todo el lugar los programadores originales han utilizado -Expresión regular para reemplazar varias partes de una cadena (en Visual Studio 2012)

document.all.element 

Como entiendo la ".Todos" está IE se introdujo la función única, introducido en el IE 4. Las normas conforme ".getElementById" en IE 5. Quiero para cambiar las instancias de la declaración anterior a -

document.getElementById("element") 

¿cómo iba a formar esta expresión regular, utilizando específicamente de diálogo "Buscar y reemplazar" de Visual Studio?

Respuesta

2

No estoy seguro si esto es un problema conmigo usando Visual Studio 2012 RC pero al usar llaves no se pudo hacer coincidir con nada.

Terminé usando la expresión hallazgo -

document\.all\.([a-zA-Z0-9]+) 

y la sustitución

document.getElementById("$1") 

El "$ 1" se refiere a la expresión entre corchetes.

Gracias por su ayuda chicos.

+0

Ese podría ser el caso, estoy acostumbrado a VS 2010 y no ha mencionado que está en 2012. –

+0

Hubiera mencionado que estaba usando 2012, pero en esta situación no esperaba que hubiera hecho una diferencia. Ahora no estoy seguro de qué hacer, edite mi pregunta para reflejar la situación (y marque mi respuesta como correcta) o déjela genérica porque su respuesta (y la de dasblinkenlight) es correcta para las versiones anteriores de Visual Studio. –

+0

No esperaría que esto sea diferente, no dude en aceptar su respuesta;) –

0

No creo que necesite una expresión regular.

Basta con sustituir document.all.element por document.getElementById en el texto sustituir diálogo

+0

No funcionaría en esta situación, necesito rodear la parte del "elemento" con corchetes y comillas. –

+0

¿me puede mostrar un ejemplo en el que esto no funciona? –

+0

Ok, lo entiendo. Usted document.all.elements es accedido por un índice, esta no es una función –

4

En Visual Studio 2010 y principios de la sintaxis de expresiones regulares es el siguiente:

Para etiquetar un uso expresión { }, para hacer referencia a la primera etiqueta para el uso de reemplazo \1

En el caso de que necesite para encontrar:

document\.all\.{[a-zA-Z0-9]+} 

y sustituir por:

document.getElementById('\1') 

En Visual Studio 2012, la sintaxis de expresiones regulares ha cambiado a:

document\.all\.([a-zA-Z0-9]+) 
document.getElementById('$1') 
+1

¿No es la etiqueta '()' de Visual Studio 2012 en lugar de '{}'? Esas son versiones anteriores de Visual Studio. –

1

Buscar

[.]all[.]{:i} 

y reemplazar con

.getElementById("\1") 

Los corchetes alrededor del punto . son para asegurarse de que no se interpretan como metacaracteres (en su lugar, puede usar \.). El :i es el símbolo de Visual Studio para un identificador .

El \1 en la cadena de sustitución hace referencia a la primera tagged expresión (es decir la expresión {:i}), por lo que el identificador se "pega en" dentro de las comillas dobles.

Cuestiones relacionadas