2010-11-15 5 views
0

Je dois extraire l'URL d'un texte en utilisant jquery.Jquery Extrait l'URL du texte

Disons que j'ai sowhere sur la page suivante code textarea

<textarea rows="20" name="textarea" style="width:100%;"> 
    @techreport{blabl, 
    blabla = {}, 
    url = {http://server.com/thepdf.pdf}, 
    wrongurl ={http://server.com/thepdf2.pdf}, 
    blablabla = 1998, 
    blablablabla= {blablablablabla}} 
</textarea> 

i besoin de l'URL, et seul le contenu url - pas wrongurl. Mise à jour: il a toujours la même structure et j'ai seulement besoin de l'extraire UNE FOIS et il a toujours un "url = {" devant lui.

+0

Alors, qu'est-ce qui distingue exactement l'URL de l'erreur? –

+0

@Pekka: Si j'avais un pari, je dirais qu'il est à la bonne regex. – jAndy

+0

il a "url = {" devant – Timur

Répondre

2

que diriez-vous

$(document).ready(function() { 

    $('#click').click(function(){ 

var one = document.getElementById('one');  
    one.value.match(/url ={([^}]*)}/,""); 
    alert(RegExp.$1); 


    })  
}) 

ou une démonstration runnable http://jsfiddle.net/PePS7/10/

oups, peu tard pour le jeu, mais des règlements ultérieurs l'exemple et l'jsFiddle pour ne montrer que l'url

+0

Bon, mais il ne veut que l'URL, pas le "= {" et tout ça. Applique mon regex à ton code et je pense que nous avons un gagnant. –

+0

super, c'est presque ce que je voulais, sauf qu'il me donne aussi l'url = { – Timur

+0

merci, compris. http://jsfiddle.net/q2DbV/3/ – Timur

0

Vous aurez besoin de faire un peu de Reg ex à ce sujet. Si j'étais meilleur, j'en écrirais un pour toi.

+0

ai-je vraiment besoin de regex si je sais que mon URL a toujours "url = {" devant? – Timur

0

jQuery a gagné » Pour ce faire, vous cherchez une expression régulière pour extraire l'URL de la propriété 'url' dans cette zone de texte. Vous pouvez le faire avec l'expression rationnelle suivante:

/url = \{(.+)\}/.exec(textarea_str)[1]

+0

Cela ne fonctionnera pas, javascript ignore les sauts de ligne (s'il y en a) il sélectionnera tout à partir du {après l'url jusqu'à la finale} – Juan

0

La meilleure chose à faire est d'utiliser une expression rationnelle, comme tout le monde a souligné.

/url = \{([^}]*)\}/ 

Cette expression rationnelle devrait le faire.

+0

Super, merci! http://jsfiddle.net/q2DbV/3/ – Timur