2011-02-18 3 views
0

Je suis en train de faire correspondre toutes les URL dans un texte arbitraire, sans délimiteurs spécifique, et éventuellement avec plusieurs articles dans la même ligne:correspondants urls sans délimiteurs spécifiques

http://www.site.com/image1.jpg "http://www.site.com/image2.jpg" 
'http://www.site.com/image1.jpg&a=1' 

S'il vous plaît ne pas l'espace après la fist URL, et la terminaison &a=1

Ceci est ma regex réelle: (https?:\/\/.*\.(?:png|jpg)), qui correspond correctement juste la dernière URL, mais le poing et la seconde sont mis en correspondance comme un résultat.

Le résultat attendu devrait être plutôt ceci:

http://www.site.com/image1.jpg 
http://www.site.com/image2.jpg 
http://www.site.com/image1.jpg 

Merci.

Répondre

0

si elles se terminent toutes par .jpg, il est assez facile à réaliser avec cette expression rationnelle: /[a-zA-Z0-9:\/\.-]+\.jpg/. J'ai ajouté quelques exemples d'URL supplémentaires pour tester le match. Le résultat est un tableau de correspondances.

var str = "http://www.site.com/image1.jpg \"http://www.site.com/image2.jpg\" 'http://www.site.com/image1.jpg&a=1' http://www.21d1dk1kk1.org/image.jpg http://www.21d1dk1-kk1.org/image.jpg"; 

var matches = str.match(/[a-zA-Z0-9:\/\.-]+\.jpg/g); 

si vous avez besoin de faire correspondre plus qu'un simple jpg, vous pouvez utiliser (jpg|gif|png) etc. en place du jpg (par exemple. [a-zA-Z0-9:\/\.-]+\.(jpg|gif|png)/g)

Avoir le tableau des correspondances, vous pouvez le sortir de quelque manière que vous voulez en itérer. Mais je suppose que vous savez comment gérer cela.

+0

Merci, ça marche super! J'ai modifié la regex comme ceci: 'var items = ht.match (/ https?: \/\/[A-zA-Z0-9: \/\ .-] + \. (Jpg | jpeg | png | gif)/gi); 'pour faire correspondre les URL absolues, les types de fichiers multiples et les caractères insensibles à la casse. – Omiod

+0

ouais - ne savais pas si vous avez besoin du protocole ou non :) mais heureux qu'il soit utile, bravo! –

Questions connexes