2010-10-28 5 views
0

je suis en train de diviser une valeur TextArea où un motif ne correspond pas àscinder une chaîne dans js où un modèle ne correspond PAS?

le texte est comme suit:

Some Good Tutorials 
http://a.com/page1 
http://a.com/page2 
Some Good Images 
http://i.com/p1 
http://i.com/p2 
Some Good Videos 
http://m.com/p1 
http://m.com/p2 

maintenant je veux obtenir uniquement les liens du texte donc une meilleure solution serait de diviser la chaîne entière dans un tableau de chaînes où la ligne est pas une URL et parmi ce tableau divisé chaque chaîne avec « \ n »

modifier:

okay je trouve une solution, je peux trouver des lignes qui ne commence pas par http: // ou https: // et les remplacer par un bon endroit après que je peux obtenir les liens si je suis faible dans regex, donc quelqu'un peut Dites-moi comment faire cela en JavaScript?

+0

Si tout ce que vous voulez est l'URL, pourquoi ne pas simplement les faire en utilisant directement au lieu de correspondance divisé: quelque chose comme /(http:\/\/.*?)/g deppending si votre moteur regex franchit les sauts de ligne, vous devrez peut-être modifier un peu le précédent, et devrez peut-être faire quelque chose comme ajouter un saut de ligne avant d'exécuter l'expression régulière afin de vous assurer que vous obtenez le dernier lien. –

+0

Je ne peux pas faire cela parce que je veux des liens séparés regroupés, par exemple dans l'exemple ci-dessus, certains liens sont liés à des vidéos tandis que d'autres sont liés à des images que je veux grouper séparément – shaheer

Répondre

0

Résolu enfin! Voici le code:

function split_lines() { 
    var oText = $('linkTxtArea').value; 
    removeBlankLines(); // a helper function to remove blank lines 
    oText = oText.split("\n"); // first split the string into an array 
    for (i = 0; i < oText.length; i++) // loop over the array 
    { 
     if (!oText[i].match(/^http:/)) // check to see if the line does not begins with http: 
     { 
      oText[i] = oText[i].replace(oText[i], "!replaced!"); // replace it with '!replaced!' 
     } 
    } 
    oText = oText.toString().split("!replaced!"); // now join the array to a string and then split that string by '!replaced!' 
    for (i = 1; i < oText.length; i++) 
    { 
     oText[i] = oText[i].replace(/^,/,"").replace(/,$/,""); // there were some extra commas left so i fixed it 
    } 
    return oText; 
} 
2

Faites correspondre le motif. ne pas diviser avec ça.

valeur = value.match (/ http \: \/\ /.+/ g)

(+ correspond tout à la fin d'une ligne.)

Questions connexes