2008-09-29 6 views
10

en Javascript, lo siguiente:Regexp coincidencia de lista de cadenas de citas - sin comillas

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 
var result = test.match(/".*?"/g); 
alert(result); 

rendimientos "el rápido", "zorro marrón", "salta por encima", "el perro perezoso"

Quiero que cada elemento coincidente sea sin comillas: el zorro marrón, rápido, salta, el perro perezoso

¿qué hará el regexp?

Respuesta

7

Esto parece funcionar:

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 
var result = test.match(/[^"]+(?=(" ")|"$)/g); 
alert(result); 

Nota: Esto no coincide con los elementos vacíos (es decir, ""). Además, no funcionará en los navegadores que no son compatibles con JavaScript 1.5 (los lookaheads son una característica 1.5).

Consulte http://www.javascriptkit.com/javatutors/redev2.shtml para obtener más información.

0

Puede usar el Javascript replace() method para quitarlos.

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 

var result = test.replace(/"/, ''); 

¿Hay algo más que deshacerse de las comillas dobles?

+0

específicamente deseo que la matriz resultante que coincida() devuelva. Sé que puedo recortar cada elemento, pero estoy seguro de que hay una manera de hacerlo en un solo paso con una expresión regular astuta –

-1

Aquí hay una manera:

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 
var result = test.replace(/"(.*?)"/g, "$1"); 
alert(result); 
+0

gracias pero el resultado es simplemente una cadena. quiero una matriz de 4 elementos (lo que coincide con() devuelve) con las comillas eliminadas –

+0

Ah, sry. Mi javascript está un poco oxidado. Parece que no hay expresiones regex en javascript. Entonces la respuesta de David es tu mejor apuesta. –

3

No es una expresión regular, sino dos expresiones regulares más simples.

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 

var result = test.match(/".*?"/g); 
// ["the quick","brown fox","jumps over","the lazy dog"] 

result.map(function(el) { return el.replace(/^"|"$/g, ""); }); 
// [the quick,brown fox,jumps over,the lazy dog] 
+0

Sí, puedo ver cómo funcionaría esto, pero me imagino que si voy a plantar algunas cosas de expresiones regulares fea en mi código, debería valer la pena haciendo todo lo que quiero en una sola toma. :) –

0

Esto es lo que me gustaría utilizar en ActionScript3: Respuesta

var test:String = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 
var result:Array = test.match(/(?<=^"| ").*?(?=" |"$)/g); 
for each(var str:String in result){ 
    trace(str); 
} 
1

de grapefrukt funciona también. Me usando una variación de la

match(/[^"]+(?=("\s*")|"$)/g) 

ya que adecuadamente se ocupa de cantidades arbitrarias de espacio en blanco y pestañas interpolar las cuerdas, que es lo que necesitaba David.

0

Para hacer coincidir el contenido entre pares de comillas simples y comillas dobles para las que se han escapado.

Como motor de búsqueda me llevó por primera vez aquí, me gustaría orientar las personas que buscan para comprobar citas pares a la pregunta más genérica: https://stackoverflow.com/a/41867753/2012407.

La expresión regular obtendrá el contenido completo entre pares bien formados de citas como '"What\'s up?"' por ejemplo que no están en un comentario de código como // Comment. o /* Comment. */.

Cuestiones relacionadas