2010-07-26 3 views

Répondre

2

est ici une façon de le faire si vous ne l'aimez pas des expressions régulières.

var str = 'function onclick(event) { window.location.href = "index.html?q1=v1&g2=v2"; }'; 
var idx = str.indexOf('"')+1; 
var res = str.substr(idx, str.lastIndexOf('"') - idx); 

Essayez-:http://jsfiddle.net/Tk8aw/

+0

merci. ce code fonctionne avec ff, mais ne fonctionne pas avec IE. Actuallly tout d'abord je reçois cette chaîne de onclick comme ceci var longString = String (cela.sur clic); après cela, je veux l'analyser. – Kerberos

+0

@Kerberos - Quelle version d'IE? Ca marche bien pour moi. Et dites-vous que la chaîne commence réellement avec '" window.location ... "'? Cela devrait encore fonctionner. – user113716

+0

mais j'obtiens cette valeur de chaîne à partir de la valeur de l'objet onclick lorsque les codes sont exécutés. Je ne manipule pas comme je l'ai écrit. j'ai édité mon post. peut-être que plus clair. – Kerberos

1

est ce que vous cherchez

var str = 'function onclick(event) { window.location.href = "index.html?q1=v1&g2=v2"; }'; 
alert(/".+?"/.exec(str)); 
2

Voici extraira le premier match de toute fonction d'une ligne (quel que soit le nom ou l'espacement):

var input = "function onclick(event) { window.location.href = \"index.html?q1=v1&g2=v2\"; }"; 
var pattern = /function\s+\w+\(\w*\)\s*{\s*window.location.href\s*=\s*['"]([^'"]*)['"];\s*}/i; 
var output = pattern.exec(input); 

Après cela fonctionne, la partie index.html... sera output[1]

0

Cette fonction ne fait pas une analyse syntaxique, mais déclare son propre window.location.href, ev als le code donné, la onclick devient une fonction définie dans le cadre de cette fonction, court, donc notre localewindow.location.href est mis à jour, puis le renvoie. Il reprend le contenu de la chaîne sont connus, sûr et semblable à ce que vous avez déjà donné.

function extractURL(code) { 
    var window = { location: { href: '' } }; 
    eval(code); 
    onclick(); 
    return window.location.href; 
} 

Exemple d'utilisation,

var fn = 'function onclick(event) { window.location.href = "index.html?q1=v1&g2=v2"; }'; 
extractURL(fn); // "index.html?q1=v1&g2=v2" 
1

Vous pouvez le saisir en utilisant une expression régulière comme ceci:

var string = 'function onclick(event) { window.location.href = "index.html?q1=v1&g2=v2"; }'; 
var url = string.match(/"(.*?)"/)[1]; 
alert(url); // == index.html?q1=v1&g2=v2, without quotes​​​​​​​​​​ 

You can try a demo here, sachez que le regex retourne un objet, pour obtenir la chaîne réelle vous êtes probablement après la deuxième entrée, [1] ici.

+0

merci ce code fonctionne très bien. – Kerberos