2011-05-03 23 views
6

He estado tratando de obtener una cadena entre dos cadenas en una línea. Encontré muchos tutoriales usando expresiones regulares, pero como no soy tan bueno en expresiones regulares, no puedo descifrar cómo hacerlo. Cualquier ayuda será apreciada.Buscar cadena entre dos cadenas en Javascript o jQuery

var fullUrl = "http://something.com/File/?URL=http://www.wireshock.com/&IP=0.0.0.0&CAT=BLOG&USER=MAND\\DEFAULT\\market4080"; 

i necesidad de encontrar una manera de conseguir la cuerda entre http://something.com/File/?URL= y & IP = y simplemente volver http: // www. wireshock.com. No quiero dividir las cadenas de "&" y obtener la cadena del medio ya que corrompe algunas URL con el carácter & en ella. Cualquier ayuda sería apreciada. Gracias :)

Respuesta

12
fullUrl.match(/URL=(.*?)&/i)[1]; 
3
var matches = fullUrl.match(/URL=(.+)\&IP=/); 
if (matches.length > 1) { 
    alert(matches[1]); 
} 

Live demo.

3

Usted podría utilizar dividida:

var result = fullUrl.split('http://something.com/File/?URL=')[1].split('&IP=')[0]; 

O una expresión regular si realmente quería, pero esto es bastante frágil. Yo recomendaría que no hagas esto. En su lugar, analizar la cadena de consulta adecuadamente como un adulto responsable:

How can I get query string values in JavaScript?

¿Qué pasa si el navegador decide oder cosas diferentes? Regex o split se romperán.

0

Este código le dará el resultado exacto que desee:

var url = fullUrl.split('?URL=')[1].split('/&IP=')[0]; 
0

Ésta es la función sencilla de lograr esto, tanto en texto mecanografiado y JavaScript con un manejo situación de excepción:

mecanografiado:

/** 
* Parses substring between given begin string and end string. 
* @param beginString the begin string 
* @param endString the end string 
* @param originalString the original string 
* @returns the substring or null if either tag is not found 
*/ 
export function parseBetween(beginString, endString, originalString): string { 
    var beginIndex: number = originalString.indexOf(beginString); 
    if (beginIndex === -1) { 
     return null; 
    } 
    var beginStringLength: number = beginString.length; 
    var substringBeginIndex: number = beginIndex + beginStringLength; 
    var substringEndIndex: number = originalString.indexOf(endString, substringBeginIndex); 
    if (substringEndIndex === -1) { 
     return null; 
    } 
    return originalString.substring(substringBeginIndex, substringEndIndex); 
} 

JavaScript:

/** 
* Parses substring between given begin string and end string. 
* @param beginString the begin string 
* @param endString the end string 
* @param originalString the original string 
* @returns the substring or null if either tag is not found 
*/ 
function parseBetween(beginString, endString, originalString) { 
    var beginIndex = originalString.indexOf(beginString); 
    if (beginIndex === -1) { 
     return null; 
    } 
    var beginStringLength = beginString.length; 
    var substringBeginIndex = beginIndex + beginStringLength; 
    var substringEndIndex = originalString.indexOf(endString, substringBeginIndex); 
    if (substringEndIndex === -1) { 
     return null; 
    } 
    return originalString.substring(substringBeginIndex, substringEndIndex); 
} 
Cuestiones relacionadas