2017-03-27 3 views
1

Ich habe einen String wie folgt aus (die der Wert des Attributs href ist):Wie kann ich einen bestimmten Parameter von der URL abgleichen?

var url = '/myweb/search?s=islamic_sources&q=test'; 

Es sieht auch manchmal wie diese:

url = '/myweb/search?q=test'; 
url = '/myweb/search?q=test&g=sth'; 

Here

^[^?]+.*?&?q=([^$|&]+) 

ist was ich bisher versucht habe, und ich muss test in diesen drei Zeilen übereinstimmen. Aber leider scheint $ bedeutet nicht das Ende der Linie in meinem Muster. Wie kann ich es reparieren?

+0

Es ist nicht ganz klar, warum Sie diese Regex gewählt haben. Probieren Sie ['\ bq = ([^ &] +) (?!. * \?)'] (Https://regex101.com/r/xuRvUs/1) (beachten Sie '\ n', das seither in der Demo hinzugefügt wurde) ist eine mehrzeilige Zeichenfolge). Das '(?!. * \?)' Hier wird alle Übereinstimmungen außerhalb einer Abfragezeichenfolge fehlschlagen. –

+0

Regex ist knifflig, aber hier ist, wie jemand anderes auf SO die Abfragevariablen in einer ähnlich formatierten Zeichenfolge zugreift, ich hoffe, es hilft! http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript –

+0

folgen Sie diesem - https://gist.github.com/marmeladze/f693501707940b1ea1af433c327800a9 – marmeladze

Antwort

0

Sie können einfach verwenden:

url.match(/q=([^&]*)/) 

Dies wird ein Array zurück. Wenn nicht leer, test 1. am Index wird

var url1 = '/myweb/search?s=islamic_sources&q=test'; 
 
var url2 = '/myweb/search?q=test'; 
 
var url3 = '/myweb/search?q=test&g=sth'; 
 

 
console.log(url1.match(/q=([^&]*)/)[1]); 
 
console.log(url2.match(/q=([^&]*)/)[1]); 
 
console.log(url3.match(/q=([^&]*)/)[1]);

0

die Regex ist /q=[^&]+/ und führen Sie es in der url, dann erste Spiel nehmen, teilen Sie es auf =, dann zweiten Teil nehmen.

Ich habe es als eine Funktion unten erstellt.

var url1 = '/myweb/search?s=islamic_sources&q=test'; 
 
var url2 = '/myweb/search?q=test'; 
 
var url3 = '/myweb/search?q=test&g=sth'; 
 

 
function retMatch(url){ 
 
    var re=/q=[^&]+/; 
 
    return re.exec(url1)[0].split('=')[1]; 
 
} 
 
console.log(retMatch(url1)); 
 
console.log(retMatch(url2)); 
 
console.log(retMatch(url3));

Verwandte Themen