2010-12-31 8 views
24

Me preguntaba cómo usar una expresión regular para que coincida con una frase que viene después de una cierta coincidencia. Al igual que:Javascript Regexp - Caracteres del partido después de cierta frase

var phrase = "yesthisismyphrase=thisiswhatIwantmatched"; 
var match = /phrase=.*/; 

que coincidirá con el phrase= al final de la cadena, pero es posible obtener todo tras la phrase= sin tener que modificar una cadena?

Respuesta

39

Utiliza capture groups (indicado por paréntesis).

Cuando ejecuta la expresión regular a través de la función coincidencia o ejecución, devuelve una matriz que consta de las subcadenas capturadas por grupos de captura. A continuación, puede acceder a lo que se capturó a través de esa matriz. Por ejemplo:

var phrase = "yesthisismyphrase=thisiswhatIwantmatched"; 
var myRegexp = /phrase=(.*)/; 
var match = myRegexp.exec(phrase); 
alert(match[1]); 

o

var arr = phrase.match(/phrase=(.*)/); 
if (arr != null) { // Did it match? 
    alert(arr[1]); 
} 
+1

¿no hay una forma de evitar el uso de 'match [1]'? – Vandervals

8
phrase.match(/phrase=(.*)/)[1] 

vuelve

"thisiswhatIwantmatched" 

Los soportes especifican un llamado grupo de captura. El contenido de los grupos de captura se pone en la matriz resultante, comenzando desde 1 (0 es la coincidencia completa).

+4

Es importante darse cuenta de la '' null devuelve .match' 'si la coincidencia falla, entonces prueba eso antes de tratar de obtener el primer índice es una buena idea. Además, si tiene más de una fase en esa cadena clave = valor, puede cambiar la expresión regular a '/ phrase = (. *?) (; | $) /' Donde; es el delimitador Además, puede abstraer esto con un método usando el constructor RegEx ... – Hemlock

0

Vamos a probar esto, espero que funcione

var p = /\b([\w|\W]+)\1+(\=)([\w|\W]+)\1+\b/; 
 
console.log(p.test('case1 or AA=AA ilkjoi')); 
 
console.log(p.test('case2 or AA=AB')); 
 
console.log(p.test('case3 or 12=14'));

Cuestiones relacionadas